$ match和$ cond查询在MongoDB聚合中没有给出相同的结果

时间:2017-08-24 09:27:07

标签: mongodb aggregation-framework

考虑这两个不同的MongoDB查询:

$ match 中的

startDate查询
db.myCollection.aggregate([{
    "$match": {
      "code": "2",
      "startDate": {
        "$lt": ISODate("2017-01-31T23:59:59.999Z")
      },
    }
  },
  {
    "$group": {
      "_id": {
        "code": "$code"
      },
      "count": {
        "$sum": 1
      }
    }
  }
]);

结果:

{
    "_id" : {
        "code" : "2"
    },
    "count" : 4844.0
}
$ cond

中的

startDate查询
db.myCollection.aggregate([{
    "$match": {
      "code": "2"
    }
  },
  {
    "$project": {
      "code": "$code",
      "count": {
        "$cond": [{
          "$lt": ["$startDate", ISODate('2017-01-31T23:59:59.999Z')]
        }, 1, 0]
      }
    }
  }
}, {
  "$group": {
    "_id": {
      "code": "$code"
    },
    "count": {
      "$sum": "$count"
    }
  }
}])

结果:

{
    "_id" : {
        "code" : "2"
    },
    "count" : 4935.0
}

我不明白为什么第二个查询会给我更多文件。在我看来,这些查询必须给我一个相同的结果......我使用" $ cond"以错误的方式?什么可能导致这种差异?

0 个答案:

没有答案