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

Does Mongodb queries a record by DateTime quicker than by String?

例如,这是一条记录:

 { 
     "_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存储在数字对象中,这意味着我们对数字进行了比较。 Mongo 会将大小为 64 位(8 字节)的对象 see here 与同一对象进行比较。

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

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

欢迎大家提出意见!

link here

Comparison/Sort Order

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