例如,这是一个记录:

 {
     "_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"
 }

最佳答案

是的。
这种差异是基于date对象作为数字存储在datetime对象中而产生的。
为了理解这一点,我们可以这样做:
当对dateTime字段有查询并且dateTime存储在数字对象中时,这意味着我们可以比较数字。Mongo会将64位(8字节)大小的对象与相同对象进行比较。
比较字符串时,mongo加载如下字符串:2016-06-27T08:39:44.000它是23个字符*2字节(utf)=>46字节,以便在内存中进行比较,并且需要检查从最高到最低的所有字节。
现在,您知道了为什么使用dateobject而不是string会更快。
欢迎评论!
see here
比较/排序顺序
Minkey(内部类型)
无效的
数字(整数、长整数、双精度数)
符号,字符串
对象
数组
宾达
对象
布尔型
日期
时间戳
常规
表达
MAXKEY(内部类型)

08-03 13:32