问题:MongoDB大于numberLong问题

我正在尝试获取集合中的所有文档,其中日期存储如下:

{
  "_id": {
    "$oid": "5c500ff8df157e051961cfab"
  },
  "date": {
    "$date": {
      "$numberLong": "1548750839931"
    }
  },
  "when": "2019-1-29T8:33Z",
  "score": 20
}

...大于:1546300800000

我的收藏中有 2 条记录,但我没有得到任何回报?

这是我的查询:

{"date":{"$gt": 1546300800000}}

我想这与日期存储为字符串有关,但可以做到吗?

希望得到帮助,并在此先感谢:-)

解答

您的日期保存为Date类型,并且您正在使用时间戳来查找文档。

因此,您可以先使用$toLong聚合运算符将date转换为时间戳,然后使用$gt运算符

如果您使用的是 mongodb 4.0

db.collection.find({
  "$expr": {
    "$gt": [{ "$toLong": "$date" }, 1546300800000]
  }
})

如果您使用的是 mongodb 3.6

db.collection.find({
  "$expr": {
    "$gt": [
      { "$subtract": ["$date", new Date("1970-01-01")] },
      1546300800000
    ]
  }
})

或者您可以简单地将您的timestamp转换为类型date

db.collection.find({
  "date": { "$gt": new Date(1546300800000) }
})
Logo

MongoDB社区为您提供最前沿的新闻资讯和知识内容

更多推荐