如何使用`update`将新元素推入mongo doc中的数组?

时间:2016-11-12 12:33:29

标签: node.js mongodb

nodejs mongodb驱动程序update函数的文档说第二个参数是" update document",但不能描述其中一个那些是。

他们展示了如何使用它在文档中设置根节点值的示例:

var r = yield col.updateOne({a:1}, {$set: {b: 1}});

这会将item.b的{​​{1}}设置为1。

...但是我无法从这里推断出如何将一个元素添加到一个叶子的数组中(不在上面的item.a===1项目的根部)

这可能是

b

col.updateOne({a:1}, {$push: {sub_node: {the_list: 1}}});

......实际的方式是什么?

和(旁边的问题)这个记录在哪里?我们怎么知道怎么做?

2 个答案:

答案 0 :(得分:1)

您可以使用两个运算符 1)$ push

col.updateOne({a:1}, {$push: {sub_node: {the_list: 1}}})

这会将the_list变量推送到sub_node对象数组对象

2)$ addToSet:

col.updateOne({a:1}, {$addToSet: {sub_node: {the_list: 1}}})

这也和$ push一样,但它会避免在sub_node数组中重复输入 你可以看到mongodb文档

答案 1 :(得分:0)

似乎没有关于nodejs mongodb驱动程序如何在nodejd mongodb驱动程序引用中实现update文档的信息。

看起来本机(mongo)实现也有效。记录在案here

使用"点符号"

访问嵌套文档元素
theDb.collection('projects').updateOne({id: projectId}, {$push: {"contract.variations": variationId}})

对于react开发人员而言,这是不直观的,其中immutability-helper的{​​{1}}看起来看似相似,但使用嵌套对象语法。遗憾!