如何在mongodb中只返回文档中的嵌入对象



我有以下模型…

{
username: 'bob',
data: [
{
sport: 'football',
events: [
{
event: 1,
_id: 'h4jh234ht34j'
},
{
event: 2,
_id: '4h326ol2j3ld'
},
{
event: 2,
_id: 'fdsfasdfa3ws'
}
// ... more events
]
},
{
sport: 'cricket',
events: [
{
event: 3,
_id: 'hd2g234ht3gj'
},
{
event: 2,
_id: '33326oldwqld'
},
{
event: 6,
_id: '461fa24gsa3s'
}
// ... more events
]
},
// ... more sports
]
}

是否有一种方法,我可以查询这个数据库,找到任何事件对象,其中事件属性等于2?我希望查询为event = 2的不同集合中的所有事件返回一个对象数组。这是可能的吗?还是事件数组需要是"数据"的直接祖先?财产吗?

如果你想找到包含某个id的整个用户文档你可以像这样做Playground 1

如果你只想要匹配的事件,你可以用$unwinds来做。操场上2

最后是您只想要事件数据,您可以使用$replaceRoot来获得预期的结果。操场3

最新更新