Me pregunto si hay una manera de hacer una actualización de autorreferencia en MongoDB, por lo que puede usar los parámetros del objeto en una consulta $ set. Aquí está un ejemplo:actualización autorreferencial usando MongoDB
> db.labels.save({"name":"label1", "test":"hello"})
> db.labels.save({"name":"label2", "test":"hello"})
> db.labels.save({"name":"label3", "test":"hello"})
> db.labels.find()
{ "_id" : ObjectId("4f1200e2f8509434f1d28496"), "name" : "label1", "test" : "hello" }
{ "_id" : ObjectId("4f1200e6f8509434f1d28497"), "name" : "label2", "test" : "hello" }
{ "_id" : ObjectId("4f1200eaf8509434f1d28498"), "name" : "label3", "test" : "hello" }
vi que se puede utilizar esta sintaxis en $ donde las consultas: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-JavascriptExpressionsand%7B%7B%24where%7D%7D
> db.myCollection.find({ a : { $gt: 3 } });
> db.myCollection.find({ $where: "this.a > 3" });
> db.myCollection.find("this.a > 3");
> f = function() { return this.a > 3; } db.myCollection.find(f);
tanto, he intentado con:
db.labels.update ({"test": "hola"}, {$ set: {"test": this.name})
pero no funcionó.
El resultado esperado es:
{ "_id" : ObjectId("4f1200e2f8509434f1d28496"), "name" : "label1", "test" : "label1" }
{ "_id" : ObjectId("4f1200e6f8509434f1d28497"), "name" : "label2", "test" : "label2" }
{ "_id" : ObjectId("4f1200eaf8509434f1d28498"), "name" : "label3", "test" : "label3" }
¿Alguna idea? Gracias de antemano
Gracias por la respuesta RameshVel. Estoy usando Mongoid, así que revisaré los resultados y los guardaré con el valor anterior. Estoy preocupado por el rendimiento. ¿Alguna recomendacion? – fertapric
@fertapric, lo siento no :(. Me temo que esa es la única forma. – RameshVel
@RameshVel ¿Eso sigue siendo cierto para la versión actual de MongoDb? – Cartesius00