强制列表类型在$ min更新运算符中

时间:2016-05-02 09:54:19

标签: mongodb

我有以下结构的文件:

{
    "_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它是否正在更新列表,即使该列表尚不存在?

我想避免为每个文档创建空列表,因为这会破坏我当前的程序设计。

0 个答案:

没有答案