我做了一個快速測試在這裏跑了幾個解釋,看看每個查詢長得很像,首先指定一個與類型:
PRIMARY> db.nulltest.find({ "a" : { $type : 10 } }).explain()
{
"cursor" : "BtreeCursor a_1",
"nscanned" : 110011,
"nscannedObjects" : 110011,
"n" : 110011,
"millis" : 121,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
"a" : [
[
null,
null
]
]
}
}
然後一個與null作爲標準:
PRIMARY> db.nulltest.find({ "a" : null }).explain()
{
"cursor" : "BtreeCursor a_1",
"nscanned" : 110011,
"nscannedObjects" : 110011,
"n" : 110011,
"millis" : 122,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
"a" : [
[
null,
null
]
]
}
}
結果看起來非常相同(1ms不顯着),索引邊界在解釋上是相同的。因此,我懷疑這裏根本沒有什麼區別,所以堅持更可讀的語法是一個好主意
我完全同意類型語法是可怕的,所以我想避免它,如果可能的話。 –