我是mongodb的新手,我只需要ID为5689746的单个对象数据,我可以通过什么方式获得它?
[
{
"_id": 8965651651,
"orditems": [
{
"_id": 65748413141,
"itms": [
{
"item1": "aa",
"item2": "bb",
"item3": "cc",
"_id": 7894567
},
{
"item1": "dd",
"item2": "ee",
"item3": "ff",
"_id": 5689746
},
{
"item1": "gg",
"item2": "hh",
"item3": "ii",
"_id": 1644824
}
]
},
{
"_id": 87448413141,
"itms": [
{
"item1": "jj",
"item2": "kk",
"item3": "ll",
"_id": 9874567
},
{
"item1": "mm",
"item2": "nn",
"item3": "oo",
"_id": 8659746
},
{
"item1": "pp",
"item2": "qq",
"item3": "rr",
"_id": 4614824
}
]
}
]
}
]
我正在使用$elemMatch,但未获得预期结果
db.orders.findOne({
_id: 8965651651
},
{
orditems: {
$elemMatch: {
_id: 87448413141,
itms: {
$elemMatch: {
_id: 5689746
}
}
}
}
})
我想要结果
{
"_id": 8965651651,
"orditems": [
{
"_id": 65748413141,
"itms": [
{
"item1": "dd",
"item2": "ee",
"item3": "ff",
"_id": 5689746
}
]
}
]
}
1条答案
按热度按时间ds97pgxw1#
您需要将
$filter
和$mergeObjects
链接起来,因为您要双重嵌套数组字段。Mongo Playground