Dans ma collection, il n'y a qu'un seul document.
> db.c20160712.find()
{ "_id" : ObjectId("57ab909791c3b3a393e9e277"), "Dimension_id" : 2, "Attribute" : "good", "Hour" : "20160712_06", "Frequency_count" : 100
Je veux exécuter updateOne
pour remplacer le document par un autre. Mais pourquoi y a-t-il Error: the update operation document must contain atomic operators
?
> db.c20160712.updateOne( { "Attribute" : "good"}, {"Type" : "DVD", "Title" : "Matrix, The", "Released" : 1999, "Genre" : "Action"}, { upsert: true} )
2016-08-10T16:37:57.089-0400 E QUERY [thread1] Error: the update operation document must contain atomic operators :
DBCollection.prototype.updateOne@src/mongo/Shell/crud_api.js:493:1
@(Shell):1:1
Les deuxième et troisième arguments de la commande ci-dessus proviennent d'un exemple de Le guide définitif pour MongoDB: Un guide complet sur le traitement des données volumineuses .... par Eelco Plugge, David Hows, Peter Membrey, Tim Hawkins
Mon MongoDB est 3.2.
Mauvaise syntaxe pour le second paramètre. S'il vous plaît vérifier les docs . CA devrait etre:
db.c20160712.updateOne(
{ "Attribute" : "good" },
{ $set: {"Type" : "DVD", "Title" : "Matrix, The", "Released" : 1999, "Genre" : "Action" } },
{ upsert: true }
);
Je pense que cela a été modifié suite à l'introduction de la méthode updateOne, en plus de update () et updateMany (), en tant que sauvegarde permettant d'empêcher l'utilisateur de remplacer accidentellement tout un document.
Vous pouvez utiliser la méthode replaceOne () à la place, ou update () sans spécifier multi: true.