例如,这是一条记录:
{
"_id" : ObjectId("576bc7a48114a14b47920d60"),
"id" : "TEST0001",
"testTime" : ISODate("2016-06-23T11:28:06.529+0000")
}
The testTime
是 ISODate,Mongodb 是否通过以下方式查询记录testTime
比这个更快吗? :
{
"_id" : ObjectId("576bc7a48114a14b47920d60"),
"id" : "TEST0001",
"testTime" : "2016-06-23 11:28:06"
}
是的,它确实。
差异是由于日期对象在日期时间对象中存储为数字而产生的。
为了理解这一点,我们将用这个例子来说明:
当有查询时dateTime
提交并dateTime
存储在数字对象中,这意味着我们可以对数字进行比较。 Mongo将比较大小为64位(8字节)的对象see here http://bsonspec.org/spec.html与同一个对象。
当比较字符串时,mongo 像这样加载字符串:2016-06-27T08:39:44.000
这是 23 个字符*2 个字节(utf)=> 46 个字节在内存中进行比较,需要检查从最高到最低的所有字节。
现在,您知道为什么使用 dateObject 而不是 string 更快的答案了。
有什么意见欢迎留言!
链接在这里 https://docs.mongodb.com/manual/reference/bson-types/
比较/排序
- MinKey(内部类型)
- Null
- 数字(整型、长整型、双精度型)
- 符号、字符串
- Object
- Array
- BinData
- 对象ID
- Boolean
- Date
- 时间戳
- Regular
- 表达
- MaxKey(内部类型)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)