Mongoose:如何将字段/值插入现有的子文档

时间:2015-08-21 14:46:38

标签: node.js mongodb mongoose

我无法理解新field:value objects如何添加到mongo数据库。

说我有以下document

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>: ...}}

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

我认为您可以在this语法后更新favouritefood数组第一个对象

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