我的结构如下:
{
_id: ObjectId("doc1"),
SubArrayDocs: [
{
_id: ObjectId("subDoc1"),
name: "name1"
},
{
_id: ObjectId("subDoc2"),
name: "name2"
},
{
_id: ObjectId("subDoc3"),
name: "name3"
}
]
},
{
_id: ObjectId("doc2"),
....
}
我想匹配doc1并在投影时通过_id返回过滤后的SubArrayDocs,这样我只得到subDoc1和subDoc2。
我已经尝试了一些事情,我可以获得所有的subArrayDocs,或者只是第一个匹配$ in运算符的。
有没有办法在匹配的文档上过滤Subarray文档,这样我就可以在不使用聚合框架的情况下找回多个子数组文档。
给定orgId的预期结果:" doc1"和 子阵列文档:" subDoc1,subDoc2"应该是:
{
_id: ObjectId("doc1"),
SubArrayDocs: [
{
_id: ObjectId("subDoc1"),
name: "name1"
},
{
_id: ObjectId("subDoc2"),
name: "name2"
}
]
}
所以基本上,获取文档,但其子数组的过滤内容。 我已经尝试了 I 可以使用$ elemMatch,投影和位置参数的所有内容。