我有一个这样的数据库:
[
{
"universe":"comics",
"saga":[
{
"name":"x-men",
"characters":[
{
"character":"wolverine",
"picture":"618035022351.png"
},
{
"character":"cyclops",
"picture":"618035022352.png"
}
]
}
]
},
{
"universe":"dc",
"saga":[
{
"name":"spiderman",
"characters":[
{
"character":"venom",
"picture":"618035022353.png"
}
]
}
]
}
]
通过这段代码,我设法更新数组中的一个对象。特别是对象所在character: wolverine
db.mydb.findOneAndUpdate({
"universe": "comics",
"saga.name": "x-men",
"saga.characters.character": "wolverine"
}, {
$set: {
"saga.$[].characters.$[].character": "lobezno",
"saga.$[].characters.$[].picture": "618035022354.png",
}
}, {
new: false
}
)
它返回我的所有文档,我只需要匹配的文档
我想返回已更新的对象,而不必对数据库进行更多查询。
Note
我被告知我的代码不能正常工作,显然我的查询更新这个问题很糟糕,我想知道如何修复它并获取与这些搜索条件匹配的对象。
换句话说,我怎样才能得到这个输出:
{
"character":"wolverine",
"picture":"618035022351.png"
}
在使用过滤器的单个查询中
{
"universe": "comics",
"saga.name": "x-men",
"saga.characters.character": "wolverine"
}
我的 MongoDB 知识阻止我纠正这个问题。