2

例如,这是一条记录:

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

testTimeISODate,Mongodb查询记录testTime是否比这更快?:

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

1 回答 1

2

是的,它确实。

差异是基于日期对象存储为 dateTime 对象中的数字而产生的。

要理解这一点,我们可以使用以下示例:

当对字段进行查询dateTimedateTime存储在数字对象中时,这意味着我们对数字进行了比较。Mongo 会将大小为 64 位(8 字节)的对象与相同的对象进行比较,请参见此处。

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

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

欢迎任何意见!

链接在这里

比较/排序

  1. MinKey(内部类型)
  2. 无效的
  3. 数字(整数、长整数、双精度数)
  4. 符号,字符串
  5. 目的
  6. 大批
  7. 二进制数据
  8. 对象标识
  9. 布尔值
  10. 日期
  11. 时间戳
  12. 常规的
  13. 表达
  14. MaxKey(内部类型)
于 2016-06-27T07:44:06.077 回答