我可以通过此搜索找到一个项目:
db.item.find({"startdate":{$gte: 1485521569000 }})
日期似乎对应
> new Date(1485521569000)
ISODate("2017-01-27T12:52:49Z")
但如果我搜索
db.item.find({"startdate":{"$gte" : ISODate("2017-01-01T00:00:00Z")}})
我没有得到任何结果。我究竟做错了什么?
PS我发现的唯一方法是
db.item.find({"startdate":{"$gte" : (new Date("2017-01-01")).getTime()}})
这是正确的还是有更好的方法?
下面一个将工作。
db.getCollection('test').find({
"key": {
"$gte": (ISODate("2017-01-01")).getTime()
}
})
原因:
你有你的数据在int64
或long
在new Date
查询中,您将日期转换为返回时间int
。所以get
进行integer
比较。
在ISODate
您传递日期时,它不会将日期转换为integer
毫秒。因此,如果您进行转换,两者都将起作用。
new Date() 将当前日期作为 Date 对象返回。mongo shell 使用 ISODate 助手包装 Date 对象
var d = ISODate("2017-01-01")
print(d); //Sun Jan 01 2017 05:30:00 GMT+0530 (IST)
因此,比较失败。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句