database - 获取具有至少两个值的文档,用于数组中的特定条件,在 MongoDB 中查询
问题描述
假设您在此结构中有一个集合。
{ "_id" : ObjectId("5f21a77c52efa009cc9857a7"), "results" : [ 76, 72, 93 ] },
{ "_id" : ObjectId("5f21a993b4d13477dd950904"), "results" : [ 90, 94, 80 ] },
{ "_id" : ObjectId("5f21a9a0b4d13477dd950905"), "results" : [ 70, 73, 99 ] },
{ "_id" : ObjectId("5f21a9abb4d13477dd950906"), "results" : [ 91, 85, 99 ] }
我正在使用 Mongodb 指南针。
我想找到他们的results
数组包含至少两个大于 90 的项目的文档。
我试过这样做:
{$or:[{$and:[ {"results.0": { $gte : 90 } },{"results.1": { $gte : 90 } } ]}, {$and: [ {"results.1": { $gte : 90 } },{"results.2": { $gte : 90 } } ]}, {$and: [ {"results.0": { $gte : 90 } },{"results.2": { $gte : 90 } } ]}]}
通过这个查询,我得到了这个结果
我想知道是否有“优化查询”来做同样的事情!提前致谢!
解决方案
推荐阅读
- scala - 数据源 io.pivotal.greenplum.spark.GreenplumRelationProvider 不支持流式写入
- javascript - 寻找一种简写的 JS 方法来评估多个对象/对象状态的存在并设置为 bool
- python - pandas:在转换数据框的集合列时,缓冲区的维数错误(预期为 1,得到 0)
- python - oauth2client 现在已弃用
- c++ - 具有互斥成员的默认移动构造函数
- javascript - JS中的每个函数都是闭包吗
- websphere - WMB HTTP 输入节点超时
- javascript - 如何获得两个不可变地图之间的差异?
- python - 如何检查 for 循环中的特定值然后结束它?
- reactjs - redux/redux-observable 错误:动作必须是普通对象