这个应该按月过滤结果的查询似乎工作正常。但我不知道如何添加年份过滤器。

db.collection.find({
  "$expr": {
    "$eq": [{ "$month": "$timestamp" }, 12]
  }
});

我试图想出这样的东西,但没有成功。
db.collection.find({
  "$expr": {
    "$and": [
      { "$eq": [{ "$month": "$timestamp" }, 12] },
      { "$eq": [{ "$year": "$timestamp" }, 2018] }
    ]
  }
});

如何正确地做到这一点?

最佳答案

我想使用 find 而不是聚合。添加另一个带有 $eq$and 像这样对我有用。

db.collection.find({
  $and: [
    { $expr: {$eq: [{$month: "$timestamp"}, 12]} },
    { $expr: {$eq: [{$year: "$timestamp"}, 2019]} }
  ]
});

关于javascript - MongoDB 查找具有多个 eq 的 expr,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54328287/

10-13 01:32