【问题标题】:How can I add a special Mongo expression to a JSON object?如何向 JSON 对象添加特殊的 Mongo 表达式?
【发布时间】:2016-02-13 04:06:09
【问题描述】:

所以我知道我应该如何将任何常规字符串/对象添加到 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" }
};

发出更新命令的代码的sn-p如下:

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

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

有人可以帮忙解答这些问题吗?

感谢您的帮助:)

卡梅隆

【问题讨论】:

  • 我不清楚你在这里问什么。您是否尝试直接从您收到的 json 对象添加到您的 mongodb?

标签: javascript json mongodb


【解决方案1】:

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

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

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

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

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

最终被执行的查询变成了,

updateItem = {
    $set : { "author" : "Mardy Bum" }
};

【讨论】:

  • 感谢您的回答。我可以确认这对我有用。但是,我怎么能在 $set 参数中构建查询呢?每次调用函数都会不同,所以需要是可变的。例如,我如何添加另一个字段和条目,例如“价格”:“12.99”。谢谢:)
  • 编辑:我只是在调用 $set 之前创建了一个 JSON 对象,然后在检查是否进行了任何更改后添加 ojbect。代码很简单:updateItem = { $set : editItems };
猜你喜欢
  • 2013-12-19
  • 2015-09-16
  • 2013-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多