summaryrefslogtreecommitdiff
path: root/jstests/core/unset2.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/core/unset2.js')
-rw-r--r--jstests/core/unset2.js25
1 files changed, 25 insertions, 0 deletions
diff --git a/jstests/core/unset2.js b/jstests/core/unset2.js
new file mode 100644
index 00000000000..501f9f16331
--- /dev/null
+++ b/jstests/core/unset2.js
@@ -0,0 +1,25 @@
+var res;
+
+t = db.unset2;
+t.drop();
+
+t.save( {a:["a","b","c","d"]} );
+t.update( {}, {$unset:{"a.3":1}} );
+assert.eq( ["a","b","c",null], t.findOne().a );
+t.update( {}, {$unset:{"a.1":1}} );
+assert.eq( ["a",null,"c",null], t.findOne().a );
+t.update( {}, {$unset:{"a.0":1}} );
+assert.eq( [null,null,"c",null], t.findOne().a );
+t.update( {}, {$unset:{"a.4":1}} );
+assert.eq( [null,null,"c",null], t.findOne().a ); // no change
+
+t.drop();
+t.save( {a:["a","b","c","d","e"]} );
+t.update( {}, {$unset:{"a.2":1},$set:{"a.3":3,"a.4":4,"a.5":5}} );
+assert.eq( ["a","b",null,3,4,5], t.findOne().a );
+
+t.drop();
+t.save( {a:["a","b","c","d","e"]} );
+res = t.update( {}, {$unset:{"a.2":1},$set:{"a.2":4}} );
+assert.writeError( res );
+assert.eq( ["a","b","c","d","e"], t.findOne().a );