summaryrefslogtreecommitdiff
path: root/jstests
diff options
context:
space:
mode:
authorTess Avitabile <tess.avitabile@mongodb.com>2017-04-14 17:29:53 -0400
committerTess Avitabile <tess.avitabile@mongodb.com>2017-04-17 17:54:51 -0400
commit114c13e0318bb9b360ccf7a8943eff4bdc5a5cd1 (patch)
tree87b1ac9200f61d199b5ba9d52ac1f861d5fba6b7 /jstests
parent4185dafcbe40b7c8fa194ee0c36422293f58be7a (diff)
downloadmongo-114c13e0318bb9b360ccf7a8943eff4bdc5a5cd1.tar.gz
SERVER-28577 Extend mongos update implementation to accept an arrayFilters parameter
Diffstat (limited to 'jstests')
-rw-r--r--jstests/core/update_arrayFilters.js62
1 files changed, 32 insertions, 30 deletions
diff --git a/jstests/core/update_arrayFilters.js b/jstests/core/update_arrayFilters.js
index 085284ea66c..4271eb8cddb 100644
--- a/jstests/core/update_arrayFilters.js
+++ b/jstests/core/update_arrayFilters.js
@@ -11,19 +11,19 @@
if (db.getMongo().writeMode() !== "commands") {
assert.throws(function() {
- coll.update({}, {$set: {a: 5}}, {arrayFilters: [{i: 0}]});
+ coll.update({_id: 0}, {$set: {a: 5}}, {arrayFilters: [{i: 0}]});
});
} else {
// Non-array arrayFilters fails to parse.
- assert.writeError(coll.update({}, {$set: {a: 5}}, {arrayFilters: {i: 0}}),
+ assert.writeError(coll.update({_id: 0}, {$set: {a: 5}}, {arrayFilters: {i: 0}}),
ErrorCodes.TypeMismatch);
// Non-object array filter fails to parse.
- assert.writeError(coll.update({}, {$set: {a: 5}}, {arrayFilters: ["bad"]}),
+ assert.writeError(coll.update({_id: 0}, {$set: {a: 5}}, {arrayFilters: ["bad"]}),
ErrorCodes.TypeMismatch);
// Bad array filter fails to parse.
- let res = coll.update({}, {$set: {a: 5}}, {arrayFilters: [{i: 0, j: 0}]});
+ let res = coll.update({_id: 0}, {$set: {a: 5}}, {arrayFilters: [{i: 0, j: 0}]});
assert.writeError(res, ErrorCodes.FailedToParse);
assert.neq(-1,
res.getWriteError().errmsg.indexOf(
@@ -31,7 +31,7 @@
"update failed for a reason other than failing to parse array filters");
// Multiple array filters with the same id fails to parse.
- res = coll.update({}, {$set: {a: 5}}, {arrayFilters: [{i: 0}, {j: 0}, {i: 1}]});
+ res = coll.update({_id: 0}, {$set: {a: 5}}, {arrayFilters: [{i: 0}, {j: 0}, {i: 1}]});
assert.writeError(res, ErrorCodes.FailedToParse);
assert.neq(
-1,
@@ -40,7 +40,7 @@
"update failed for a reason other than multiple array filters with the same top-level field name");
// Good value for arrayFilters succeeds.
- assert.writeOK(coll.update({}, {$set: {a: 5}}, {arrayFilters: [{i: 0}, {j: 0}]}));
+ assert.writeOK(coll.update({_id: 0}, {$set: {a: 5}}, {arrayFilters: [{i: 0}, {j: 0}]}));
}
//
@@ -49,34 +49,34 @@
// Non-array arrayFilters fails to parse.
assert.throws(function() {
- coll.findAndModify({query: {}, update: {$set: {a: 5}}, arrayFilters: {i: 0}});
+ coll.findAndModify({query: {_id: 0}, update: {$set: {a: 5}}, arrayFilters: {i: 0}});
});
// Non-object array filter fails to parse.
assert.throws(function() {
- coll.findAndModify({query: {}, update: {$set: {a: 5}}, arrayFilters: ["bad"]});
+ coll.findAndModify({query: {_id: 0}, update: {$set: {a: 5}}, arrayFilters: ["bad"]});
});
// arrayFilters option not allowed with remove=true.
assert.throws(function() {
- coll.findAndModify({query: {}, remove: true, arrayFilters: [{i: 0}]});
+ coll.findAndModify({query: {_id: 0}, remove: true, arrayFilters: [{i: 0}]});
});
// Bad array filter fails to parse.
assert.throws(function() {
- coll.findAndModify({query: {}, update: {$set: {a: 5}}, arrayFilters: [{i: 0, j: 0}]});
+ coll.findAndModify({query: {_id: 0}, update: {$set: {a: 5}}, arrayFilters: [{i: 0, j: 0}]});
});
// Multiple array filters with the same id fails to parse.
assert.throws(function() {
coll.findAndModify(
- {query: {}, update: {$set: {a: 5}}, arrayFilters: [{i: 0}, {j: 0}, {i: 1}]});
+ {query: {_id: 0}, update: {$set: {a: 5}}, arrayFilters: [{i: 0}, {j: 0}, {i: 1}]});
});
// Good value for arrayFilters succeeds.
- assert.eq(
- null,
- coll.findAndModify({query: {}, update: {$set: {a: 5}}, arrayFilters: [{i: 0}, {j: 0}]}));
+ assert.eq(null,
+ coll.findAndModify(
+ {query: {_id: 0}, update: {$set: {a: 5}}, arrayFilters: [{i: 0}, {j: 0}]}));
//
// Tests for the bulk API.
@@ -101,12 +101,12 @@
// updateOne().
bulk = coll.initializeUnorderedBulkOp();
- bulk.find({}).arrayFilters("bad").updateOne({$set: {a: 5}});
+ bulk.find({_id: 0}).arrayFilters("bad").updateOne({$set: {a: 5}});
assert.throws(function() {
bulk.execute();
});
bulk = coll.initializeUnorderedBulkOp();
- bulk.find({}).arrayFilters([{i: 0}]).updateOne({$set: {a: 5}});
+ bulk.find({_id: 0}).arrayFilters([{i: 0}]).updateOne({$set: {a: 5}});
assert.writeOK(bulk.execute());
}
@@ -116,20 +116,20 @@
// findOneAndUpdate().
assert.throws(function() {
- coll.findOneAndUpdate({}, {$set: {a: 5}}, {arrayFilters: "bad"});
+ coll.findOneAndUpdate({_id: 0}, {$set: {a: 5}}, {arrayFilters: "bad"});
});
- assert.eq(null, coll.findOneAndUpdate({}, {$set: {a: 5}}, {arrayFilters: [{i: 0}]}));
+ assert.eq(null, coll.findOneAndUpdate({_id: 0}, {$set: {a: 5}}, {arrayFilters: [{i: 0}]}));
// updateOne().
if (db.getMongo().writeMode() !== "commands") {
assert.throws(function() {
- coll.updateOne({}, {$set: {a: 5}}, {arrayFilters: [{i: 0}]});
+ coll.updateOne({_id: 0}, {$set: {a: 5}}, {arrayFilters: [{i: 0}]});
});
} else {
assert.throws(function() {
- coll.updateOne({}, {$set: {a: 5}}, {arrayFilters: "bad"});
+ coll.updateOne({_id: 0}, {$set: {a: 5}}, {arrayFilters: "bad"});
});
- let res = coll.updateOne({}, {$set: {a: 5}}, {arrayFilters: [{i: 0}]});
+ let res = coll.updateOne({_id: 0}, {$set: {a: 5}}, {arrayFilters: [{i: 0}]});
assert.eq(0, res.modifiedCount);
}
@@ -150,15 +150,15 @@
if (db.getMongo().writeMode() !== "commands") {
assert.throws(function() {
coll.bulkWrite(
- [{updateOne: {filter: {}, update: {$set: {a: 5}}, arrayFilters: [{i: 0}]}}]);
+ [{updateOne: {filter: {_id: 0}, update: {$set: {a: 5}}, arrayFilters: [{i: 0}]}}]);
});
} else {
assert.throws(function() {
coll.bulkWrite(
- [{updateOne: {filter: {}, update: {$set: {a: 5}}, arrayFilters: "bad"}}]);
+ [{updateOne: {filter: {_id: 0}, update: {$set: {a: 5}}, arrayFilters: "bad"}}]);
});
let res = coll.bulkWrite(
- [{updateOne: {filter: {}, update: {$set: {a: 5}}, arrayFilters: [{i: 0}]}}]);
+ [{updateOne: {filter: {_id: 0}, update: {$set: {a: 5}}, arrayFilters: [{i: 0}]}}]);
assert.eq(0, res.matchedCount);
}
@@ -185,19 +185,21 @@
// update().
if (db.getMongo().writeMode() !== "commands") {
assert.throws(function() {
- coll.explain().update({}, {$set: {a: 5}}, {arrayFilters: [{i: 0}]});
+ coll.explain().update({_id: 0}, {$set: {a: 5}}, {arrayFilters: [{i: 0}]});
});
} else {
assert.throws(function() {
- coll.explain().update({}, {$set: {a: 5}}, {arrayFilters: "bad"});
+ coll.explain().update({_id: 0}, {$set: {a: 5}}, {arrayFilters: "bad"});
});
- assert.commandWorked(coll.explain().update({}, {$set: {a: 5}}, {arrayFilters: [{i: 0}]}));
+ assert.commandWorked(
+ coll.explain().update({_id: 0}, {$set: {a: 5}}, {arrayFilters: [{i: 0}]}));
}
// findAndModify().
assert.throws(function() {
- coll.explain().findAndModify({query: {}, update: {$set: {a: 5}}, arrayFilters: "bad"});
+ coll.explain().findAndModify(
+ {query: {_id: 0}, update: {$set: {a: 5}}, arrayFilters: "bad"});
});
- assert.commandWorked(
- coll.explain().findAndModify({query: {}, update: {$set: {a: 5}}, arrayFilters: [{i: 0}]}));
+ assert.commandWorked(coll.explain().findAndModify(
+ {query: {_id: 0}, update: {$set: {a: 5}}, arrayFilters: [{i: 0}]}));
})(); \ No newline at end of file