diff options
Diffstat (limited to 'jstests/core/write/update/update_arraymatch5.js')
-rw-r--r-- | jstests/core/write/update/update_arraymatch5.js | 23 |
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"); |