首页 > 解决方案 > 如何使用 $in 并使用大于和小于在 mongodb 中查找计数?

问题描述

我在测试集合中有文档,如下所示:

{
    "_id" : "3233123123213123123",
    "sequence":30,
    "containIds":["fgx"]
}
{
    "_id" : "534545345345345345",
    "sequence":70,
    "containIds":["abc", "fgx"]
}
{
    "_id" : "56756676767676767",
    "sequence":160,
    "containIds":[]
}
db.getCollection('Test').find({"containIds":{$in: [ "fgx", "containIds" ]}}).count(); // result 1

and 

db.getCollection(Test').count({sequence:{ $gt :  0, $lt : 99}})//result 2

但我想将这两个查询合二为一,并且需要得到一个结果。//结果应该是1

我需要聚合和投影吗?如何在 mongodb 中为 using$in和 ( $gtand ) 编写查询?$lt

标签: arraysmongodbmongodb-queryaggregation-framework

解决方案


您可以尝试aggregate()方法和$facet阶段来分离查询和结果,

  • first,您可以更改名称,输入您的匹配条件并$count获取总记录
  • second,您可以更改名称,输入您的匹配条件并$count获取总记录
db.getCollection('Test').aggregate([
  {
    $facet: {
      first: [
        { $match: { "containIds": { $in: ["fgx", "containIds"] } } },
        { $count: "count" }
      ],
      second: [
        { $match: { sequence: { $gt: 0, $lt: 99 } } },
        { $count: "count" }
      ]
    }
  }
])

操场


推荐阅读