Multiplier le terrain, en valeur, dans Mongodb

J'ai été à la recherche d'un moyen de créer une instruction de mise à jour qui va prendre un champ numérique et de le modifier à l'aide d'une expression. Par exemple, si j'ai un champ appelé de Prix, est-il possible de faire une mise à jour définit Prix à 50% de rabais sur la valeur existante ?

Donc, compte tenu de { Price : 19.99 }

J'aimerais faire db.collection.update({tag : "refurb"}, {$set {Price : Price * 0.50 }}, false, true);

Est-ce possible ou dois-je lire la valeur pour le client, de modifier, puis mise à jour ? Je suppose que la question est alors expressions peuvent être utilisées dans la mise à jour, et peuvent-ils référence au document en cours de mise à jour.

  • Veuillez noter que dans une prochaine version de mongo, vous pouvez le faire sans tout cela eval et DB verrouillage presque sans frais. Vérifier et peut-être accepter la nouvelle réponse, de sorte que les nouveaux développeurs de ne pas les utiliser obsolètes info.
InformationsquelleAutor Brad | 2011-12-01