【发布时间】:2021-07-10 03:55:44
【问题描述】:
这里解释了更新数组中的元素:
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 在我的示例中创建一个数组而不是一个对象但只使用点符号。
【问题讨论】:
-
看起来没有办法告诉 MongoDB 结果数据类型必须是什么。默认情况下,MongoDB 将点符号路径转换为对象。您不能将路径转换为特定类型,并且没有明确的语法告诉 MongoDB 提供的路径必须导致数组:(
标签: mongodb mongodb-query