2011-03-09 12 views
17

¿Es posible actualizar un solo documento pasando dos operadores $ inc en un solo documento de actualización?

Por ejemplo, yo estoy tratando de incrementar dos campos diferentes en un documento dado usando el siguiente documento de actualización:

{ 
    "$inc" : { "ViewAggregates.4d75b891842f2d3930cf7674" : 1 }, 
    "$inc" : { "ViewAggregates.Total" : 1 } 
} 

No hay errores se tiran y el documento se actualiza pero sólo uno de los campos se ha incrementado . Es como si el servidor descartara el primer operador $ inc y solo se aplicara el segundo.

es éste el \ correcto comportamiento previsto o hay algo que me falta?

Respuesta

43

Este es un efecto secundario interesante de claves de diccionarios ser único - el segundo $inc sobrescribe la primera.

Sin embargo, todavía es posible incrementar más de un campo:

{ 
    "$inc": { 
     "ViewAggregates.4d75b891842f2d3930cf7674" : 1, 
     "ViewAggregates.Total" : 1 
    } 
} 

Esto funciona para muchos otros operadores también :-)

+0

Ah! Qué tonto de mi parte pasar por alto el hecho de que las llaves son únicas. Tengo que aprender a no trabajar tan tarde en la noche. ¡Gracias! –

+0

jajaja, he hecho lo mismo algunas veces. –

Cuestiones relacionadas