这是我正在尝试查询的示例文档
{
"_id":"asdf0-002f-42d6-b111-ade91df09249",
"user":[
{
"_id":"14bfgdsfg0-3708-46ee-8164-7ee1d029a507",
"n":"aaa"
},
{
"_id":"aasdfa89-5cfe-4861-8a9a-f77428158ca9",
"n":"bbb"
}
]
}
该文档有2个用户引用,包含用户_id和其他misc信息。我有2个用户ID,我试图只通过用户ID获取此文档。我也不知道2 ids的顺序。这是一个可能的查询吗?
col.findOne({
user:{
$all:[
{
_id:"14bfgdsfg0-3708-46ee-8164-7ee1d029a507"
},
{
_id:"aasdfa89-5cfe-4861-8a9a-f77428158ca9"
}
]
}
})
^^我尝试过的东西不起作用。
答案 0 :(得分:1)
ElemMatch应该可以做到这一点。
col.findOne({user:{$ elemMatch:{“_ id”:“14bfgdsfg0-3708-46ee-8164-7ee1d029a507”,“_ id”:“aasdfa89-5cfe-4861-8a9a-f77428158ca9”}}})
答案 1 :(得分:1)
你接近你的全部尝试。
col.findOne({
"user._id":{
$all : [ "14bfgdsfg0-3708-46ee-8164-7ee1d029a507",
"aasdfa89-5cfe-4861-8a9a-f77428158ca9" ]
}
}
您可以通过包装引号来查询子文档。从那里,$ all与你正在寻找的价值观有效。
Mongodb find a document with all subdocuments satisfying a condition显示了此类查询的变体。