此处解释了更新数组内的元素:
https://docs.mongodb.com/manual/reference/operator/update/set/#set-elements-in-arrays
但是在文档中似乎缺少文档中不存在数组的情况。例子:
如果有这个文件:
{
_id: 'some-id',
otherprops: 'value'
}
我希望它变成这样:
{
// ...
settings: {
friends: [
{
name: 'John Doe',
age: 28
}
]
}
// ...
}
在这种情况下,我不知道是否已经有 settings.friends 数组。所以我的查询如下所示:
{
$set: {
'settings.friends.0.name': 'John Doe',
'settings.friends.0.age': 28
}
}
然而,该文件的结果是这样的:
{
// ...
settings: {
friends: {
0: {
name: 'John Doe',
age: 28
}
}
}
// ...
}
有没有办法强制 mongodb 在我的例子中创建一个数组而不是一个对象 但仅使用点符号。
最佳答案
try this.
{
$addToSet: {
"settings.friends": [
{
name: 'John Doe',
age: 28
}
]
}
}
关于MongoDB $set 数组中不存在对象的项目作为元素导致对象而不是数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55999996/