我有以下结构的文件:
{
"_id" : 0,
"mins" : {
"ts1" : {
"node1" : [
1,
2,
3
],
"node2" : [
4,
5,
6
]
}
}
}
我想通过采用数组的最小组件来更新文档。由于MongoDB在数组上不支持$ min(我认为),我正在单独更新每个索引:
db.foo.updateOne(
{"_id" : 0},
{$min: {
"mins.ts3.node1.0": 1,
"mins.ts3.node1.1": 2
}}
)
这很好但问题是如果文档在更新之前没有数组,MongoDB会创建一个嵌套文档而不是数组:
{
"_id" : 0,
"mins" : {
"ts1" : {
"node1" : [
1,
2,
3
],
"node2" : [
4,
5,
6
]
},
"ts3" : {
"node1" : {
"0" : 1,
"1" : 2
}
}
}
}
有没有办法告诉MongoDB它是否正在更新列表,即使该列表尚不存在?
我想避免为每个文档创建空列表,因为这会破坏我当前的程序设计。