2012-06-21 37 views
6

Trong mã này sử dụng trình điều khiển gốc mongodb tôi muốn tăng giá trị của trường mà tôi chỉ định trong một biến riêng biệt. Vấn đề là tên trường trong mệnh đề $ inc sẽ là 'biến' trong trường hợp này, không phải là nội dung của biến. Trong phần truy vấn, biến được chọn hoạt động như mong đợi và tìm id chính xác.Làm cách nào để sử dụng biến làm tên trường trong findAndModify của nativeodb-native?

var selected = 'id_of_the_selected_one'; 
var variable = 'some_string'; 
collection.findAndModify(
    {_id : selected}, 
    {}, 
    {$inc : {variable : 1}}, 
    {new : true, upsert : true}, 
    function(err, autoincrement) { /* ... */ } 
); 

Tôi nên làm như thế nào thay vì từ 'biến' sẽ có nội dung của biến?

Trả lời

13

Đặt khóa của một biến khác thành giá trị của nó và chuyển giá trị đó làm đối tượng. Lưu ý về hành động:

var selected = 'id_of_the_selected_one'; 
var variable = 'some_string'; 
var action = {}; 
action[variable] = 1; // the value 

collection.findAndModify(
    {_id : selected}, 
    {}, 
    {$inc : action}, 
    {new : true, upsert : true}, 
    function(err, autoincrement) { /* ... */ } 
); // Same as {$inc: {'some_string': 1} } 
+0

Cảm ơn. Đó chính xác là những gì tôi đang chăm sóc. – Timo

Các vấn đề liên quan