【问题标题】:MongoDB find filter by month and yearMongoDB按月和年查找过滤器
【发布时间】:2019-01-23 20:41:51
【问题描述】:

此查询用于过滤 12/2018 的帖子..

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

但如果我颠倒年份和月份,则会显示所有 2018 年的帖子。

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

这是为什么呢?看不懂。

【问题讨论】:

    标签: node.js mongodb mongodb-query


    【解决方案1】:

    JavaScript 对象不能有多个同名键,但您在这里使用了两次 $eq 键,因此只使用了第二个。

    相反,使用$and 组合这两个表达式:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 2019-07-27
      • 2013-03-08
      • 1970-01-01
      • 2017-07-01
      • 2022-01-14
      相关资源
      最近更新 更多