實現一個應用程序,該應用程序從大約10封電子郵件ID列表中查找郵件ID存在。試用$或$ in。
$ in似乎給出了更好的性能,但不顯着。比其他人更優化嗎?
實現一個應用程序,該應用程序從大約10封電子郵件ID列表中查找郵件ID存在。試用$或$ in。
$ in似乎給出了更好的性能,但不顯着。比其他人更優化嗎?
MongoDB的文檔有the answer:
「當使用$或<表達式>是對同一字段的值相等檢查,選擇運營商在$或經營$」。
「雖然‘$或者’永遠是可行的,用‘$在’只要有可能作爲查詢優化器 更有效地處理它。」
此外「$ in」具有更高的可讀性。
編號:MongoDB的權威指南
$or
運算符是邏輯運算符,你可以定義自己的登錄,但$in
運營商比較運營商您可以比較你不能把你的邏輯。
語法的$in
:
{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }
實施例:
db.account.find({ qty: { $in: [ 5, 15 ] } })
語法的$or
:
{ $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }
實施例:
db.account.find({ $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] })
注意:賬戶是您的收藏名稱
對於初學者來說,$ in只需要一個索引,這是顯着的,因爲$或更多(每個子句一個)的原因。 $或者就像獲取每個子句的結果,然後合併重複項並返回結果。所以這是要考慮的一個重點,而$ in是一個範圍標識符。根據計算機科學的規律,我會說,如果你可以使用$,它會比$或者更優化 – Sammaye