summaryrefslogtreecommitdiff
path: root/jstests/core/write/update/update_arraymatch5.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/core/write/update/update_arraymatch5.js')
-rw-r--r--jstests/core/write/update/update_arraymatch5.js23
1 files changed, 23 insertions, 0 deletions
diff --git a/jstests/core/write/update/update_arraymatch5.js b/jstests/core/write/update/update_arraymatch5.js
new file mode 100644
index 00000000000..1b4c967b38b
--- /dev/null
+++ b/jstests/core/write/update/update_arraymatch5.js
@@ -0,0 +1,23 @@
+// @tags: [
+// requires_fastcount,
+// requires_multi_updates,
+// requires_non_retryable_writes,
+// ]
+
+t = db.update_arraymatch5;
+t.drop();
+
+t.insert({abc: {visible: true}, testarray: [{foobar_id: 316, visible: true, xxx: 1}]});
+t.createIndex({'abc.visible': 1, 'testarray.visible': 1, 'testarray.xxx': 1});
+assert(t.findOne({'abc.visible': true, testarray: {'$elemMatch': {visible: true, xxx: 1}}}), "A1");
+assert(t.findOne({testarray: {'$elemMatch': {visible: true, xxx: 1}}}), "A2");
+
+t.update({'testarray.foobar_id': 316},
+ {'$set': {'testarray.$.visible': true, 'testarray.$.xxx': 2}},
+ false,
+ true);
+
+assert(t.findOne(), "B1");
+assert(t.findOne({testarray: {'$elemMatch': {visible: true, xxx: 2}}}), "B2");
+assert(t.findOne({'abc.visible': true, testarray: {'$elemMatch': {visible: true, xxx: 2}}}), "B3");
+assert.eq(1, t.find().count(), "B4");