mongodb 日期查询不适用于 ISODate?

玻璃主机

我可以通过此搜索找到一个项目:

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()
  }
})

原因:

你有你的数据在int64long

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MongoDB日期和ISODate解析

使用mongoimport将日期(ISODate)导入MongoDB

MongoDB 组 ISODate 但保持日期格式

用于更新日期的 MongoDB 查询不适用于所有文档

MongoDB查询工作,但不适用于Mongoose

MongoDb条件查询LTE不适用于数字

MongoDB 查询 FindOne 不适用于 Nodejs API?

尝试使用RoboMongo将当前日期/ ISODate()插入MongoDB

如何在MongoDB中查询将日期存储为ISODate的日期范围

在mongodb中使用ISODate进行日期查询似乎不起作用

DigiCert证书不适用于MongoDB

Mongodb $ lookup不适用于_id

MongoDB | 排序不适用于聚合

TypeORM FindById不适用于MongoDB

Mongodb 投影不适用于 Java

Mongoexport -q ISODate查询

Promise.all 不适用于两个 mongodb 查询

MongoDB PHP-findOne,使用查询过滤不适用于特定项目的结果

带有 PHP 变量的 Mongodb 查询不适用于 Limit

如何在MongoDb中使用杰克逊将日期字段存储为ISODate()

MongoDB:在聚合中,除了 ISODate 之外,還有另一種按日期匹配的方法嗎?

JavaScript-如何以ISODate格式在MongoDB文档中保存日期?

如何将MongoDB的jQuery Fullcalendar日期格式化为ISODate?

为什么MongoDB shell新的ISODate(0001-01-01)返回日期1901-01-01

如何将用户输入日期与 mongodb ISODate 对象进行比较

在 MongoDB 中使用 Mongo Shell 将字符串转换为日期或 ISODate

使用时间时,由于缺少“ ISODate”,Golang + mgo查询mongodb失败

使用Google表格“ dd-MM-yyyy HH:ss”作为输出在MongoDB上查询ISODate

Node API 上的 MongoDB ISODate 和时区