-
Type: Question
-
Resolution: Works as Designed
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Labels:None
When I'm trying to run updateMany() in the following way, my server returns an error:
db.collection.updateMany( <query>, <pipeline> );
Error: Error: the update operation document must contain atomic operators.
When I'm using update() instead, it works. Using it like so:
db.collection.update(
<query>,
<pipeline>,
{
multi: true
}
);
I tried in on version 4.2 and 4.4 - no difference. The exact code looks like this:
Doesn't work:
db.getCollection("testsets").updateMany( { properties: { $exists: true } }, [ { $set: { "documentProperties.documentCategory": "$properties.documentCategory", "documentProperties.pageCategories": "$properties.pageCategories"} }, { $unset: ["properties.documentCategory", "properties.pageCategories"] } ] );
Works:
db.getCollection("testsets").update( { properties: { $exists: true } }, [ { $set: { "documentProperties.documentCategory": "$properties.documentCategory", "documentProperties.pageCategories": "$properties.pageCategories"} }, { $unset: ["properties.documentCategory", "properties.pageCategories"] } ], { multi: true, } );
Error:
2021-01-12T09:36:56.413+0100 E QUERY [js] Error: the update operation document must contain atomic operators : DBCollection.prototype.updateMany@src/mongo/shell/crud_api.js:625:1 @(shell):1:1
Thanks!