Mongodb是否通过DateTime比String更快地查询记录?

时间:2016-06-27 07:26:30

标签: mongodb isodate

例如,这是一条记录:

testTime

testTime是ISODate,Mongodb查询{ "_id" : ObjectId("576bc7a48114a14b47920d60"), "id" : "TEST0001", "testTime" : "2016-06-23 11:28:06" } 的记录是否比这更快? :

{{1}}

1 个答案:

答案 0 :(得分:2)

是的。

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

要理解这一点,我们可以采用这种说法:

如果对dateTime提交了查询并且dateTime存储在数字对象中,则表示我们对数字进行了比较。 Mongo将比较具有相同对象的64位(8字节)see here大小的对象。

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

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

欢迎任何评论!

link here

  

比较/排序顺序

  1. MinKey(内部类型)
  2. Null
  3. 数字(整数,长数,双数)
  4. 符号,字符串
  5. 对象
  6. 数组
  7. BinData
  8. ObjectId
  9. 布尔
  10. 日期
  11. 时间戳
  12. 常规
  13. 表达
  14. MaxKey(内部类型)