将记录插入嵌套数组

时间:2019-02-03 00:31:42

标签: mongodb

我的mongo集合中有一个BSON记录,如下所示:

db.item.find().pretty()
{
    "_id" : ObjectId("5c5635194b6929067972b85c"),
    "name" : "car",
    "attributes" : [
        {
            "color" : "blue",
            "qty" : 10
        }
    ]
}

我正在尝试使用upsert语义更新集合中的记录,如下所示:

db.item.update({"name" : "car", "attributes.color" : "red"}, { "$push" : {"attributes.0" : {"color" : "red", "qty": 10}}}, {upsert : true})

的想法是,如果在属性数组中没有红色的记录,则应将记录追加到数组中。但是当我运行命令时,我得到以下信息:

db.item.update({"name" : "car", "attributes.color" : "red"}, { "$push" : {"attributes.0" : {"color" : "red", "qty": 10}}}, {upsert : true})
WriteResult({
    "nMatched" : 0,
    "nUpserted" : 1,
    "nModified" : 0,
    "_id" : ObjectId("5c5635c74b6929067972b874")
})
> db.item.find().pretty()
{
    "_id" : ObjectId("5c5635194b6929067972b85c"),
    "name" : "car",
    "attributes" : [
        {
            "color" : "blue",
            "qty" : 10
        }
    ]
}
{
    "_id" : ObjectId("5c5635c74b6929067972b874"),
    "attributes" : {
        "color" : "red",
        "0" : [
            {
                "color" : "red",
                "qty" : 10
            }
        ]
    },
    "name" : "car"
}

我需要运行什么查询才能将记录追加到嵌套数组?

0 个答案:

没有答案