2011-07-15 20 views
5

Primero, busque si existe una consulta de coincidencia de documentos.¿Cómo hago un get_or_create en pymongo (python mongodb)?

Si es así, actualice ese documento con los datos nuevos.

De lo contrario, inserte un nuevo documento en la base de datos.

+0

es que algunas tareas? ; x – ThiefMaster

+0

Posible duplicado de [MongoDB: Insertar si no existe] (http://stackoverflow.com/questions/2801008/mongodb-insert-if-not-exists)? –

+0

no es tarea pero no se puede leer la documentación básica .... –

Respuesta

9

Puede usar "upsert" igual a true. Luego la consulta de actualización que ejecuta con "upsert" como verdadero hará exactamente lo que quiera.

  • actualización si existe.
  • inserte nuevo si no existe.

De la documentación MongoDB:

db.collection.update(criteria, objNew, upsert, multi) 

Arguments: 

    criteria - query which selects the record to update; 
    objNew - updated object or $ operators (e.g., $inc) which manipulate the object 
    upsert - if this should be an "upsert"; that is, if the record does not exist, insert it 
    multi - if all documents matching criteria should be updated 

http://www.mongodb.org/display/DOCS/Updating

Ejemplo:

"actualización" documentación
db.test.update({"x": "42"}, {"$set": {"a": "21"}},True)  
#True => Upsert is True 

Ver aquí:

http://api.mongodb.org/python/current/api/pymongo/collection.html

+1

'update' solo devuelve un' WriteResult'. Use 'findAndModify' en su lugar. – mljli

Cuestiones relacionadas