Tôi tự hỏi nếu có cách nào để thực hiện cập nhật tự tham chiếu trong MongoDB, vì vậy bạn có thể sử dụng thông số của đối tượng trên truy vấn $ set. Dưới đây là một ví dụ:tự cập nhật bằng cách sử dụng 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" }
tôi thấy rằng bạn có thể sử dụng cú pháp này trên $ nơi truy vấn: 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);
Vì vậy, tôi đã cố gắng với:
db.labels.update ({"test": "hola"}, {$ set: {"test": this.name})
nhưng không hoạt động.
Kết quả dự kiến là:
{ "_id" : ObjectId("4f1200e2f8509434f1d28496"), "name" : "label1", "test" : "label1" }
{ "_id" : ObjectId("4f1200e6f8509434f1d28497"), "name" : "label2", "test" : "label2" }
{ "_id" : ObjectId("4f1200eaf8509434f1d28498"), "name" : "label3", "test" : "label3" }
Bất kỳ suy nghĩ? Cảm ơn trước
Cảm ơn phản hồi RameshVel. Tôi đang sử dụng Mongoid, vì vậy tôi sẽ lặp lại kết quả và lưu nó với giá trị cũ. Tôi lo lắng về hiệu suất. Bất kỳ đề nghị? – fertapric
@fertapric, xin lỗi nope: (Tôi sợ rằng đó là cách duy nhất. – RameshVel
@RameshVel Điều đó vẫn đúng với phiên bản hiện tại của MongoDb? – Cartesius00