Mongodb获取日期之间的文档(以字符串形式存储,格式为“ 20-05-2019”)

时间:2019-05-28 05:39:49

标签: mongodb

这是我的示例文档:

 filterOption = (option, inputValue) => {
    if (option.label === "Other") {
      const { options } = this.state;
      const result = options.filter(opt => opt.label.includes(inputValue));
      this.setState({ hasExtraValue: !result.length });
      return !result.length;
    }

    return option.label.includes(inputValue);
  };

我想查询给定日期之间的文档。在“ 26-05-2019”和“ 01-06-2019”之间说。
以下是我尝试过的查询:

{ 
  "timestamp" : "1558341279777",
  "date" : "20-05-2019",
  "hour" : "14",
  "month" : "5",
  "time" : "14:4:39",
  "weekDay" : "Monday"
}

上述查询的问题在于它会进行字符串比较,当我们查询日期时,它并不总是返回正确的结果。有没有一种干净的方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

请尝试以下操作:

    db.collection.find({
      "$expr": {
        "$and": [
      {
        "$gte": [
          { "$dateFromString": { "dateString": "$date, "format": "%m-%d-%Y" }},
          ISODate("2019-05-26T00:00:00Z")
        ]
      },
      {
        "$lte": [
          { "$dateFromString": { "dateString": "$date", "format": "%m-%d-%Y" }},
          ISODate("2019-06-15T23:59:59Z")
        ]
      }
    ]
     }
    })