Man*_*nsa 5 string date mongodb mongodb-query aggregation-framework
我试图获取一个集合中的所有文档,其中的日期存储为:
{
"_id": {
"$oid": "5c500ff8df157e051961cfab"
},
"date": {
"$date": {
"$numberLong": "1548750839931"
}
},
"when": "2019-1-29T8:33Z",
"score": 20
}
Run Code Online (Sandbox Code Playgroud)
...大于此:1546300800000
我的收藏中有 2 条记录,但我没有得到任何回报?
这是我的查询:
{"date":{"$gt": 1546300800000}}
Run Code Online (Sandbox Code Playgroud)
我想这与将日期存储为字符串有关,但可以做到吗?
希望得到帮助,并在此先感谢:-)
您的日期被保存为Date类型,您正在使用时间戳来查找文档。
因此,您可以先date使用$toLong聚合运算符转换为时间戳,然后使用$gt运算符
如果您使用的是 mongodb 4.0
db.collection.find({
"$expr": {
"$gt": [{ "$toLong": "$date" }, 1546300800000]
}
})
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 mongodb 3.6
db.collection.find({
"$expr": {
"$gt": [
{ "$subtract": ["$date", new Date("1970-01-01")] },
1546300800000
]
}
})
Run Code Online (Sandbox Code Playgroud)
或者您可以简单地将您timestamp的类型转换为date
db.collection.find({
"date": { "$gt": new Date(1546300800000) }
})
Run Code Online (Sandbox Code Playgroud)