(function() {
|
"use strict";
|
|
const dbName = "test";
|
const collName = "foo";
|
const ns = dbName + '.' + collName;
|
|
const st = new ShardingTest({shards: 2, config: 1});
|
|
assert.commandWorked(st.s.adminCommand({enableSharding: dbName}));
|
st.ensurePrimaryShard(dbName, st.shard0.shardName);
|
assert.commandWorked(st.s.adminCommand({shardCollection: ns, key: {skey: 1}}));
|
|
assert.commandWorked(st.s.adminCommand({split: ns, middle: {skey: 0}}));
|
assert.commandWorked(st.s.adminCommand({moveChunk: ns, find: {skey: 0}, to: st.shard1.shardName}));
|
assert.commandWorked(st.s.getDB(dbName)[collName].insert({skey: 10}));
|
|
const sessionDB = st.s.startSession({retryWrites: true}).getDatabase(dbName);
|
|
assert.writeOK(sessionDB[collName].update({skey: 10}, {$set: {skey: -10}}));
|
sessionDB[collName].findAndModify({query: {skey: -10}, update: {$set: {skey: 10}}});
|
|
// Both operations below fail with InvalidOptions.
|
assert.writeOK(sessionDB[collName].update({skey: 10}, {$set: {skey: -10}}, {writeConcern: {w: 1}}));
|
sessionDB[collName].findAndModify({query: {skey: -10}, update: {$set: {skey: 10}}, writeConcern: {w: 1}});
|
|
st.stop();
|
})();
|