如何将特殊的Mongo表达式添加到JSON对象?

时间:2016-02-13 04:06:10

标签: javascript json mongodb

所以我知道如何将任何常规字符串/对象添加到JSON对象 - 但是,我需要将以下Mongo命令添加到我的JSON对象中:

$set : { "author" : req.body.name }

正如您所看到的,它并不像刚刚那样简单:

myJsonObject.author = "$set..." etc.

很抱歉,如果这是一个欺骗性的问题 - 这不是谷歌最简单的主题,没有大量不相关的答案突然出现。

我需要知道这一点的原因是因为我希望能够根据用户在表单中的更改来构建JSON对象。所以我遇到的一个新问题是,即使我可以构建具有多个要更改的项的JSON对象,MongoDB也只更新对象中的最后一项。我的示例JSON对象在这里:

updateItem = {
    $set : { "name" : "Squid bonobo" },
    $set : { "author" : "Mardy Bum" }
};

以及发出更新命令的代码片段如下:

updateData.update(searchItem, updateItem, false, true, function(err, results) {
        console.log(results);
        db.close();
    });

我在the following git site找到了这个解决方案。

任何人都可以帮助解决这两个问题吗?

感谢您的帮助:)

卡梅伦

1 个答案:

答案 0 :(得分:0)

您需要在以下结构中形成JSON

updateItem = {
    $set : { "name":"Squid bonobo","author":"Mardy Bum"}
}

可以使用重复的键/属性声明Javascript对象 ,但是它们的值会以任何顺序覆盖key的最新绑定值。

这里,$set是一个键/属性,它已被设置两次到变量updateItem引用的同一个对象,因此只有一个值,即上次遇到的值,将与{ {1}}。在这种情况下,优先的值是:

key

,执行的最终查询变为,

$set:{ "author":"Mardy Bum" }