{"description":"set-on-insert","schemaVersion":"1.4","createEntities":[{"client":{"id":"client0"}},{"database":{"id":"database0","client":"client0","databaseName":"operator-corpus"}},{"collection":{"id":"collection0","database":"database0","collectionName":"coll"}}],"initialData":[{"collectionName":"coll","databaseName":"operator-corpus","documents":[{"_id":{"$numberInt":"1"},"k":{"$numberInt":"1"},"a":{"$numberInt":"100"}}]}],"tests":[{"description":"$setOnInsert writes when the upsert inserts","operations":[{"object":"collection0","name":"deleteMany","arguments":{"filter":{}}},{"object":"collection0","name":"updateOne","arguments":{"filter":{"k":{"$numberInt":"1"}},"update":{"$setOnInsert":{"a":{"$numberInt":"1"}},"$set":{"b":{"$numberInt":"2"}}},"upsert":true},"expectResult":{"matchedCount":{"$numberInt":"0"},"modifiedCount":{"$numberInt":"0"},"upsertedCount":{"$numberInt":"1"}}}],"outcome":[{"collectionName":"coll","databaseName":"operator-corpus","documents":[{"_id":{"$$type":"objectId"},"k":{"$numberInt":"1"},"a":{"$numberInt":"1"},"b":{"$numberInt":"2"}}]}]},{"description":"$setOnInsert is ignored when the upsert updates","operations":[{"object":"collection0","name":"updateOne","arguments":{"filter":{"k":{"$numberInt":"1"}},"update":{"$setOnInsert":{"a":{"$numberInt":"1"}},"$set":{"b":{"$numberInt":"2"}}},"upsert":true},"expectResult":{"matchedCount":{"$numberInt":"1"},"modifiedCount":{"$numberInt":"1"},"upsertedCount":{"$numberInt":"0"}}}],"outcome":[{"collectionName":"coll","databaseName":"operator-corpus","documents":[{"_id":{"$numberInt":"1"},"k":{"$numberInt":"1"},"a":{"$numberInt":"100"},"b":{"$numberInt":"2"}}]}]},{"description":"$setOnInsert alone on a plain update is a no-op","operations":[{"object":"collection0","name":"updateOne","arguments":{"filter":{"k":{"$numberInt":"1"}},"update":{"$setOnInsert":{"a":{"$numberInt":"1"}}}},"expectResult":{"matchedCount":{"$numberInt":"1"},"modifiedCount":{"$numberInt":"0"},"upsertedCount":{"$numberInt":"0"}}}],"outcome":[{"collectionName":"coll","databaseName":"operator-corpus","documents":[{"_id":{"$numberInt":"1"},"k":{"$numberInt":"1"},"a":{"$numberInt":"100"}}]}]},{"description":"$setOnInsert alone on an insert is the whole document","operations":[{"object":"collection0","name":"deleteMany","arguments":{"filter":{}}},{"object":"collection0","name":"updateOne","arguments":{"filter":{"k":{"$numberInt":"7"}},"update":{"$setOnInsert":{"a":{"$numberInt":"1"}}},"upsert":true},"expectResult":{"matchedCount":{"$numberInt":"0"},"modifiedCount":{"$numberInt":"0"},"upsertedCount":{"$numberInt":"1"}}}],"outcome":[{"collectionName":"coll","databaseName":"operator-corpus","documents":[{"_id":{"$$type":"objectId"},"k":{"$numberInt":"7"},"a":{"$numberInt":"1"}}]}]},{"description":"$setOnInsert writes a dotted path on insert","operations":[{"object":"collection0","name":"deleteMany","arguments":{"filter":{}}},{"object":"collection0","name":"updateOne","arguments":{"filter":{"k":{"$numberInt":"1"}},"update":{"$setOnInsert":{"x.y":{"$numberInt":"5"}}},"upsert":true},"expectResult":{"matchedCount":{"$numberInt":"0"},"modifiedCount":{"$numberInt":"0"},"upsertedCount":{"$numberInt":"1"}}}],"outcome":[{"collectionName":"coll","databaseName":"operator-corpus","documents":[{"_id":{"$$type":"objectId"},"k":{"$numberInt":"1"},"x":{"y":{"$numberInt":"5"}}}]}]},{"description":"$setOnInsert may not touch _id","operations":[{"object":"collection0","name":"deleteMany","arguments":{"filter":{}}},{"object":"collection0","name":"updateOne","arguments":{"filter":{"k":{"$numberInt":"1"}},"update":{"$setOnInsert":{"_id":{"$numberInt":"9"}}},"upsert":true},"expectResult":{"matchedCount":{"$numberInt":"0"},"modifiedCount":{"$numberInt":"0"},"upsertedCount":{"$numberInt":"1"}}}],"outcome":[{"collectionName":"coll","databaseName":"operator-corpus","documents":[{"_id":{"$numberInt":"9"},"k":{"$numberInt":"1"}}]}]},{"description":"$setOnInsert and $set naming the same field on an insert","operations":[{"object":"collection0","name":"deleteMany","arguments":{"filter":{}}},{"object":"collection0","name":"updateOne","arguments":{"filter":{"k":{"$numberInt":"1"}},"update":{"$setOnInsert":{"a":{"$numberInt":"1"}},"$set":{"a":{"$numberInt":"2"}}},"upsert":true},"expectError":{"isError":true,"errorCode":{"$numberInt":"40"}}}],"outcome":[{"collectionName":"coll","databaseName":"operator-corpus","documents":[]}]},{"description":"findOneAndUpdate reports the document $setOnInsert built","operations":[{"object":"collection0","name":"deleteMany","arguments":{"filter":{}}},{"object":"collection0","name":"findOneAndUpdate","arguments":{"filter":{"k":{"$numberInt":"3"}},"update":{"$setOnInsert":{"a":{"$numberInt":"1"}}},"upsert":true,"returnDocument":"after"},"expectResult":{"_id":{"$$type":"objectId"},"k":{"$numberInt":"3"},"a":{"$numberInt":"1"}}}],"outcome":[{"collectionName":"coll","databaseName":"operator-corpus","documents":[{"_id":{"$$type":"objectId"},"k":{"$numberInt":"3"},"a":{"$numberInt":"1"}}]}]},{"description":"updateMany with $setOnInsert on an upsert that inserts","operations":[{"object":"collection0","name":"deleteMany","arguments":{"filter":{}}},{"object":"collection0","name":"updateMany","arguments":{"filter":{"k":{"$numberInt":"1"}},"update":{"$setOnInsert":{"a":{"$numberInt":"1"}}},"upsert":true},"expectResult":{"matchedCount":{"$numberInt":"0"},"modifiedCount":{"$numberInt":"0"},"upsertedCount":{"$numberInt":"1"}}}],"outcome":[{"collectionName":"coll","databaseName":"operator-corpus","documents":[{"_id":{"$$type":"objectId"},"k":{"$numberInt":"1"},"a":{"$numberInt":"1"}}]}]}]}