2011-05-31 5 views
2

J'ai quelques enregistrements dans ma collection. Et l'une des clés est 'available_on' qui est une valeur datetime/timestamp. Je veux mettre à jour par lot et ajouter un intervalle à tous ces champs.Mise à jour par lots Horodatage MongoDB

utilisation souhaitée est comme:

coll.update({}, {'$inc': {'available_on': 1 day}}, multi=true) 

J'utilise pymongo 1.10 et de ce que je comprends, il n'y a aucun moyen de fournir du code JavaScript pour update ou find_and_modify. Et je ne peux utiliser que modificateurs de mise à jour.

Répondre

-2

Je ne connaissais pas l'API Python, mais vous pouvez trouver une entrée avec l'aide de JavaScript $ où, par exemple dans le JavaScript Shell:

db.collection.find({$where: 'this.field > 3'}); 

Mais considérez que la recherche d'une entrée en fonction JavaScript peut être lent. Je pense qu'aucun index ne peut être utilisé, et vous vous retrouvez avec un scan de table.

Vous trouverez plus de cela dans la documentation officielle: http://www.mongodb.org/display/DOCS/Server-side+Code+Execution

Je pense que la « normale » façon est, que vous trouverez toutes les entrées que vous souhaitez modifier. Modifiez les objets dans votre code Python et enregistrez les nouveaux objets modifiés dans votre base de données.

+1

J'ai utilisé la même approche itérative. C'est pourquoi j'ai demandé s'il y avait une opération "Batch" pour le faire :-) – meson10

Questions connexes