mongodb - MongoDB:投影匹配查询对应的所有元素
问题描述
假设以下数据格式
{
_id: "1234",
tag: "MyTag",
members: [{
name: "James", age: 54
}, {
name: "John", age: 22
}, {
name: "Eric", age: 36
}],
},
{
_id: "7896",
tag: "MyTag2",
members: [{
name: "Philip", age: 6
}, {
name: "Mark", age: 14
}, {
name: "Maya", age: 64
}],
}
我如何要求所有 30 岁以上的人获得该结果
{
_id: "1234",
tag: "MyTag",
members: [{
name: "James", age: 54
}, {
name: "Eric", age: 36
}],
},
{
_id: "7896",
tag: "MyTag2",
members: [{
name: "Maya", age: 64
}],
}
基本上这个要求
db.MyDB.find({'members':{'$elemMatch':{'age':{'$gt':30}}}}, {'tag:1', 'members.$':1})
但是.$运算符不只返回第一个或每个列表
(我正在使用python api,但我认为这个问题更普遍)
非常感谢!
解决方案
位置运算符$
和$elemMatch
投影运算符都只匹配与查询匹配的第一个元素。
如果要获取所有匹配的元素,请使用聚合和$filter数组。
推荐阅读
- php - 按名称获取 woocommerce 类别 ID
- java - 如何在 REST GET 请求中指定空值的最佳实践
- java - 将 Matchers.eq() 与其他模拟值一起使用时出现 InvalidUseOfMatchersException
- python - Tensorflow 2 API:不推荐使用名称 tf.get_default_graph。请改用 tf.compat.v1.get_default_graph
- python - 如何在烧瓶服务器中提供 vueJS cli 应用程序
- c# - 使用 ASP.NET WebAPI C# 获取 AD 组在 Windows Server 2016 Datacenter 上不起作用
- terraform - 错误:数据 helm 存储库未按预期工作
- c# - ASP.NET Core 在 _Layout.cshtml 中使用类数据
- python-3.x - pdfkit [WinError 740] 请求的操作需要提升python3
- hadoop - Apache Hive - 执行后挂钩