java - una - update en mongodb
$ push y $ set en la misma actualizaciĆ³n de MongoDB (1)
No conozco el controlador de Java, pero ¿tienes que crear una lista allí? ¿Qué pasa si intentas este código?
BasicDBObject update = new BasicDBObject().append("$push", new BasicDBObject().append("values", dboVital));
update = update.append("$set", new BasicDBObject().append("endTime", time));
collection.update( new BasicDBObject().append("_id", pageId), update, true, false);
Esto debería producir el equivalente de
db.collection.update({_id: pageId}, {$push: {values: dboVital}, $set: {endTime: time}});
Mientras que tu código produce (sospecho) esto:
db.collection.update({_id: pageId}, [{$push: {values: dboVital}}, {$set: {endTime: time}}]);
Estoy intentando usar el controlador Java de MongoDB para realizar dos actualizaciones ($ set y $ push) en un registro en la misma operación. Estoy usando un código similar al siguiente:
BasicDBObject pushUpdate = new BasicDBObject().append("$push", new BasicDBObject().append("values", dboVital));
BasicDBObject setUpdate = new BasicDBObject().append("$set", new BasicDBObject().append("endTime", time));
BasicDBList combinedUpdate = new BasicDBList();
combinedUpdate.add( pushUpdate);
combinedUpdate.add( setUpdate);
collection.update( new BasicDBObject().append("_id", pageId), combinedUpdate, true, false);
Cuando combino $ set y $ push en la misma actualización a través de BasicDBList, obtengo una IllegalArgumentException: "los campos almacenados en la base de datos no pueden comenzar con ''$'' (Clave incorrecta: ''$ push'')".
Si hago dos actualizaciones separadas, tanto pushUpdate como setUpdate producen resultados válidos.
¡Gracias!