mongodb - Mongodb 按 DateTime 查询记录是否比按 String 更快?

标签 mongodb isodate

例如,这是一条记录:

 { 
     "_id" : ObjectId("576bc7a48114a14b47920d60"), 
     "id" : "TEST0001", 
     "testTime" : ISODate("2016-06-23T11:28:06.529+0000")
 }

testTime是ISODate,Mongodb按testTime查询记录会比这个快吗? :

{ 
     "_id" : ObjectId("576bc7a48114a14b47920d60"), 
     "id" : "TEST0001", 
     "testTime" : "2016-06-23 11:28:06"
 }

最佳答案

是的。

不同之处在于日期对象在 dateTime 对象中存储为数字。

要理解这一点,我们可以使用这个插图:

当对dateTime 进行查询并且dateTime 存储在数字对象中时,这意味着我们对数字进行了比较。 Mongo 将比较大小为 64 位(8 字节)的对象 see here与相同的对象。

当比较字符串时,mongo 会像这样加载字符串:2016-06-27T08:39:44.000 这是 23 chars*2bytes (utf) => 46 字节要在内存中进行比较,需要检查从最高位到最低位的所有字节..

现在,您知道为什么使用 dateObject 而不是 string 更快的答案了。

欢迎任何评论!

link here

Comparison/Sort Order

  1. MinKey(内部类型)
  2. 数字(整数、长整数、 double )
  3. 符号、字符串
  4. 对象
  5. 数组
  6. 二进制数据
  7. 对象编号
  8. bool 值
  9. 日期
  10. 时间戳
  11. 常规
  12. 表达
  13. MaxKey(内部类型)

关于mongodb - Mongodb 按 DateTime 查询记录是否比按 String 更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38048124/

相关文章:

mongodb - Golang/mgo : How can I store Date (not ISODate) in mongodb?

javascript - 在javascript中获取没有时间的日期ISO字符串

python - 使用python从html中提取文本

mongodb - REST API + MongoDb ISODate

mongodb - 获取mongodb中两个字段的最大差异

mongodb - 如何使用mongodb对数据进行分组?

python - 当我尝试使用 None 作为查询的 null 时,PyMongo NoneType 错误

javascript - 如何将 ng-model 添加到动态创建的输入文本字段

mongodb - 如何将 MongoDB CPU 提高到 100% 以上