Mongodb:更新变量字段名称

时间:2013-12-02 11:56:27

标签: node.js mongodb

我想在DB中的对象中添加一个带有变量名的新字段:这意味着,我不知道该字段的名称,但它保存在变量“newFieldName”中。

所以我想做的基本上是这样的:

var newFieldName = "world";
db.bios.update(
   { _id: 3 },
   { $set: {
             "hello."+newFieldName: "Amazing Grace"
           }
   }
)

更新后,我希望对象“hello”有一个字段“world”,其值为“Amazing Grace”。

但这甚至没有编译,更不用说工作了。我该怎么办?

4 个答案:

答案 0 :(得分:11)

您可以使用中间对象:

var update = { $set : {} };
update.$set['hello.' + newFieldName] = 'Amazing Grace';
db.bios.update({ _id : 3 }, update, ...)

答案 1 :(得分:3)

回答@yossale& @robertklep,内联版本实际上可以使用表达式和逗号运算符:

var newFieldName = "world", o;
db.bios.update(
   { _id: 3 },
   {$set:(o = {}, o["hello."+newFieldName] = "Amazing Grace", o)}
)

答案 2 :(得分:1)

简单的是:

useEffect(() => {
    getTweets();
  }, [tweets]); // [tweets means that hook works every time 'tweets' state changes]

@Andy的回答解决了我的问题。

答案 3 :(得分:0)

var some_object = Posts.findOne({...});
var new_value = 1337;

Posts.update(another_object._id,
    {$set: {
        [some_object.some_field]:new_value,
        }
    }
);