mongodb - 直接在字段的聚合上匹配/过滤
问题描述
在 MongoDb 聚合管道中,我经常遇到想要过滤成员字段的操作(即列表的大小)。是否可以在一次操作中执行此操作,而不是先投影变量,然后进行匹配?
这是我通常做的:
[
{
"$project": {
"vector_size": { "$size": "$VectorField" }
}
},
{
"$match": {
"vector_size": { "$gte": 7 }
}
}
]
我更喜欢一次性的,比如:
[
{
"$match": {
"VectorField": { "$size": { "$gte": 7 } }
}
}
]
但是对于该操作$size
需要一个整数,而不是另一个操作。有可能吗?
解决方案
你可以find
在one condition
db.getCollection('your-collection').find( {"$expr":{
"$gte":[
{"$size":'$VectorField'},
7
]
}})
注意:测试3.6.5
在mongo GUI
推荐阅读
- ios - 充当后台运行的 BLE 外围设备的 iOS 应用程序能否被来自 BLE 中心的连接请求唤醒?
- vb.net - 扩展方法不适用于 List(Of KeyValuePair(Of String, String))
- angular - 尝试订阅 MQTT 主题的问题 - Angular 5
- selenium-chromedriver - Nightwatch.js - 无法使用反射定义类
- python - 将具有不同开始时间的时间序列转换为 Pandas 中的开始相对偏移量
- docker - 如何使用挂载在主机和容器之间共享数据
- python - Plotly Dash:时间序列散点图渲染
- html - 将 HTML 中的样式更改为所有类元素
- jquery - 无法针对 jquery 中的某些元素
- javascript - 如何以最少的努力生成多边形尺寸?