我的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"
}
我需要运行什么查询才能将记录追加到嵌套数组?