首页 > 解决方案 > 如何仅从 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 的任何事件对象?我希望查询返回来自不同集合的所有事件的对象数组,其中事件 = 2。这可能吗,或者事件数组是否需要是“数据”属性的直接祖先?

标签: mongodbmongodb-query

解决方案


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

如果您只想要匹配的事件,您可以使用 $unwinds 来完成。游乐场 2

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


推荐阅读