1

我正在尝试将$push项目添加到我的记录中(使用MongoDB),如下所示:NodeMongoJS

exports.saveToUser = function (req, res) {
    console.log("IN");
    var user = req.params.user; 
    var param = req.params.param; // equals "foo"
    var value = req.params.value; // equals "bar"
    console.log("Saving Data to User");
    console.log(util.inspect(param, false, null));

    db.users.update({"_id": ObjectId(user)}, {$push: {param:value}}, function (err, record) {
        if (err) {
            console.log("Lookup Error: " + err);
        } else{
            console.log("Updated " + user + " with " + param);
        }
    });
};

这行得通,除了函数将“param: bar”而不是“foo: bar”推送到我的记录(参见上面的评论以了解 this 的含义)。

我尝试过$push: {eval(param):value}在黑暗中尝试做这件事,但无论如何都没有用。实现这一目标的最佳方法是什么?

4

1 回答 1

2
var ob = {};
ob[param] = value;

db.users.update({"_id": ObjectId(user)}, { $push: ob }, function (err, record) {
    // etc..
});
于 2013-07-22T13:01:06.327 回答