2015-11-26 1 views
0

Je souhaite mettre à jour un document spécifique dans mon mongodb.Mise à jour du document spécifique mongodb

J'ai cette structure dans mon document:

"_id" : ObjectId("4d5ad421515b9dd78c5000014"), 
"_type" : "ArticlePage", 
"body" : "<br />", 
"browser_title" : "Your Look", 
"created_at" : ISODate("2012-02-15T19:22:57Z"), 
"excerpt" : "", 
"meta_description" : "", 

Je veux changer ceci: "_type": "Articlepage" à ceci: "_type": "EventPage".

J'ai essayé de regarder dans les documents officiels.

db.collection.update(
    <query>, 
    <update>, 
    { 
    upsert: <boolean>, 
    multi: <boolean>, 
    writeConcern: <document> 
    } 
) 

J'ai juste besoin de mettre à jour des champs spécifiques dans le document. C'est juste un, mais j'en ai environ 30 de plus. Donc, si je peux le faire avec un, je le ferai avec les autres.

+0

utiliser l'opérateur $ set (https://docs.mongodb.org/manual/reference/operator/update/set/) – joao

Répondre

0

Vous êtes sur la droite, dépister la principale chose que vous n'avez pas encore est les options multi. Par défaut, update ne modifiera que le premier document correspondant à la requête. Si vous définissez multi sur true, tous les documents correspondant à la requête seront mis à jour.

db.collections.update(
    {_type: "ArticlePage"}, 
    {$set: {_type: "EventPage"}}, 
    {multi: true}//This will make it happen for all docs that match the query 
} 
+0

Merci. En fait, je change juste un champ par champ. Parce que j'ai beaucoup de modèles différents. Donc, je pense que si j'utilise multi, je vais même changer les modèles que je ne veux pas? C'est la raison pour laquelle je dois sélectionner exactement le document et le champ spécifiques. – user3472955

+0

@ user3472955 Je ne suis pas tout à fait clair ce que vous dites dans votre commentaire, mais cette requête va changer tous les documents qui ont une entrée '_type:" ArticlePage "' '_type:" EventPage "'. –

+0

Désolé si je ne suis pas clair. Je n'ai pas besoin de changer tous les documents. Parce que, dans le même document, j'ai un "_type" que je veux garder avec "ArticlePage". Dans le document, j'ai 23 "ArticlePage", j'ai juste besoin de changer 12. Gardez les autres. Merci – user3472955