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?