Je met à jour des enregistrements dans ma collection comme ceci:mise à jour Efficacement enregistrements dans MongoDB/pymongo (peut-être en place?)
for document in myDB.find():
if compliesToSomeRule(document):
myDB.update({'_id':document['_id']}, {'$set':{'something':'somevalue'}})
Est-ce la façon la plus efficace de le faire?
Il semble juste bizarre que je doive définir le premier paramètre de mise à jour en tant que _id
du document puisqu'il s'agit de re-interroger l'index?
Existe-t-il un moyen de mettre à jour "en place" pour ainsi dire?
Mais la clause de découverte doit retrouver un disque ... qui a déjà été trouvé sûrement? Peut-être pas. p.s. - Le meilleur XKCD hein? : D – LittleBobbyTables
Je pense que ce que Ian obtient, c'est que la première partie de l'appel de mise à jour fait la section "compliesToSomeRule". Dans ce cas, il est dit que document._id == expected_id, très basique/simple. Mais vous pourriez faire: myDB.update ({'a': 0}, {'$ set': ....}). Dans ce cas, vous spécifiez que a == 0. Cette mise à jour modifiera tout document où a == 0, elle est identique à votre méthode "compliesToSomeRule". EDIT: Je vais écrire une réponse plus complète ... – ACE