mongodb - 如何仅从 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。这可能吗,或者事件数组是否需要是“数据”属性的直接祖先?
解决方案
如果你想找到包含一些 id 的整个用户文档,你可以像这个Playground 1那样做
如果您只想要匹配的事件,您可以使用 $unwinds 来完成。游乐场 2
最后,您只需要事件数据,您可以使用 $replaceRoot 来获得预期的结果。游乐场 3
推荐阅读
- python - 使用存储在 python 列表中嵌套字典中的值验证作为用户输入的出生日期
- docker - 运行 IIS docker 文件时,本地卷未与容器挂载/绑定 [在 Windows 上]
- python - AttributeError: 'str' object has no attribute 'decode' 在我的代码的第二行出现此错误
- java - Android App 无法将数据写入 Firebase 数据库
- python - 订阅 Google Cloud PubSub 模拟器时出现意外的关键字参数“thread_name_prefix”
- javascript - 如何将毫秒转换为天/小时/分钟
- android - AndroidX房间数据库
- java - 当小时为 12 时,SimpleDateFormat 转换日期不正确的返回值
- cordova - Cordova Apache windows 中使用哪种浏览器?
- html - Angular 4 作为用户类型绑定到 contenteditable div innerHTML