119 votes

Erreur: le document d'opération de mise à jour doit contenir des opérateurs atomiques, lors de l'exécution de updateOne

Dans ma collection, il y a un seul document.

> db.c20160712.find()
{ "_id" : ObjectId("57ab909791c3b3a393e9e277"), "Dimension_id" : 2, "Attribute" : "good", "Hour" : "20160712_06", "Frequency_count" : 100 

Je veux l'exécuter en updateOne pour remplacer le document avec un autre. Mais pourquoi est-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 provient d'un exemple dans Le Guide de référence pour MongoDB: Un guide complet pour traiter les Big Data ... Par Eelco Plugge, David Hows, Peter Membrey, Tim Hawkins

Mon MongoDB est 3.2.

157voto

Alex Blex Points 5465

Syntaxe incorrecte pour le deuxième paramètre. Veuillez vérifier les documents . Ça devrait être:

 db.c20160712.updateOne(
    { "Attribute" : "good" }, 
    { $set: {"Type" : "DVD", "Title" : "Matrix, The", "Released" : 1999, "Genre" : "Action" } },
    { upsert: true }
);
 

40voto

dyouberg Points 1031

Je crois que cela a été changé comme effet secondaire de l'introduction de la méthode updateOne en plus de update () et updateMany () comme une sorte de sauvegarde pour empêcher l'utilisateur de remplacer accidentellement un document entier.

Vous pouvez utiliser la méthode replaceOne () à la place, ou une mise à jour () sans spécifier multi: true.

31voto

vous devez utiliser ce code car j'étais également confronté au même problème que j'ai utilisé ce code.

updateOne ({_ id: new ObjectID (req.params.id)}, {$ set: {title: req.body.bookName, author: req.body.authorName}}, {upsert: true})

et vous devez également définir ObjectID sinon le problème se reproduira ....

const ObjectID = require ('mongodb'). ObjectID;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X