String MongoDB大于数字长问题

String MongoDB大于数字长问题,string,mongodb,date,mongodb-query,aggregation-framework,String,Mongodb,Date,Mongodb Query,Aggregation Framework,我正在尝试获取集合中的所有文档,其中的日期存储为: { "_id": { "$oid": "5c500ff8df157e051961cfab" }, "date": { "$date": { "$numberLong": "1548750839931" } }, "when": "2019-1-29T8:33Z", "score": 20 } 。。。大于此值:15463080000000 我收藏了两张唱片,但我没有得到任何回报 我的问

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

{
  "_id": {
    "$oid": "5c500ff8df157e051961cfab"
  },
  "date": {
    "$date": {
      "$numberLong": "1548750839931"
    }
  },
  "when": "2019-1-29T8:33Z",
  "score": 20
}
。。。大于此值:15463080000000

我收藏了两张唱片,但我没有得到任何回报

我的问题是:

{"date":{"$gt": 1546300800000}}
我猜这与日期存储为字符串有关,但可以这样做吗


希望得到帮助并提前表示感谢:-)

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

所以,您可以首先使用聚合运算符将日期转换为时间戳,然后使用聚合运算符

如果您使用的是mongodb4.0

db.collection.find({
  "$expr": {
    "$gt": [{ "$toLong": "$date" }, 1546300800000]
  }
})
如果您使用的是mongodb3.6

db.collection.find({
  "$expr": {
    "$gt": [
      { "$subtract": ["$date", new Date("1970-01-01")] },
      1546300800000
    ]
  }
})
或者您可以简单地将
时间戳
转换为类型
日期

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

似乎无法使这些工作。。。是否可以在find()查询中将其转换为int?