diff options
Diffstat (limited to 'jstests/core/query/unset/unset2.js')
-rw-r--r-- | jstests/core/query/unset/unset2.js | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/jstests/core/query/unset/unset2.js b/jstests/core/query/unset/unset2.js new file mode 100644 index 00000000000..e120ae2b674 --- /dev/null +++ b/jstests/core/query/unset/unset2.js @@ -0,0 +1,30 @@ +// Cannot implicitly shard accessed collections because of following errmsg: A single +// update/delete on a sharded collection must contain an exact match on _id or contain the shard +// key. +// @tags: [assumes_unsharded_collection] + +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); |