node.js - Mongoose:如何将字段/值插入现有子文档中

标签 node.js mongodb mongoose

我无法理解如何将新的 field:value object 添加到 mongo 数据库中。

假设我有以下文档:

var people={'firstname': 'John','surname':'Smith',
'favouritefood':[{'fruit':'apples','drink':'coffee'}]}

如何将“蔬菜”:“西兰花”添加到“最喜欢的食物”中,使其看起来像这样:

{'firstname': 'John','surname':'Smith',
'favouritefood':[{'fruit':'apples','drink':'coffee','vegetable':'broccoli'}]}

如果我输入:

people.findOneAndUpdate({'firstname':'John'},
{$push {favouritefood: {vegetable:broccoli}}},
{upsert:true})

它给了我这个:

{'firstname': 'John','surname':'Smith',
'favouritefood':[{'fruit':'apples','drink':'coffee'},{'vegetable':'broccoli'}]}

如果我尝试:

people.findOneAndUpdate({'favoritefood':'apples'},
{$push {vegetable:broccoli}}},
{upsert:true})

它说:

'$push' is empty. You must specify a field like so: {$push: {<field>: ...}}

非常感谢任何帮助!

最佳答案

我认为您将能够更新 this 之后的最喜欢的食物数组第一个对象语法

但我建议你和评论中的人一样,将你的结构更改为 mongoDB 中更自然的结构。将每种食物类别视为数组的一个元素,而不是第一个元素的对象字段。

关于node.js - Mongoose:如何将字段/值插入现有子文档中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32143312/

相关文章:

javascript - 使用 Knex.js : bind message supplies X parameters, 时出现批量插入错误,但准备好的语句 ""需要 Y

javascript - Node.js 相对需要执行脚本的路径

javascript - 渲染页面后Mongojs查询完成

node.js - Mongoose:如何建模对象层次结构?

node.js - $push 是基于 mongodb 中的 $cond 吗?

node.js - npm WARN install 拒绝安装 hapi 作为自身的依赖

javascript - 如何使用 Node 的rest客户端上传文件

java - spring-data-mongodb 实体实现接口(interface)创建错误的集合

python - 如何使用 PyMongo 将集合从一个数据库复制到同一服务器上的另一个数据库?

mongodb - 通过 mongoose 为 mongodb 中集合文档中的每个嵌套对象创建 ID