2013-02-06 57 views
5

實現一個應用程序,該應用程序從大約10封電子郵件ID列表中查找郵件ID存在。試用$或$ in。

$ in似乎給出了更好的性能,但不顯着。比其他人更優化嗎?

+3

對於初學者來說,$ in只需要一個索引,這是顯着的,因爲$或更多(每個子句一個)的原因。 $或者就像獲取每個子句的結果,然後合併重複項並返回結果。所以這是要考慮的一個重點,而$ in是一個範圍標識符。根據計算機科學的規律,我會說,如果你可以使用$,它會比$或者更優化 – Sammaye

回答

15

MongoDB的文檔有the answer

「當使用$或<表達式>是對同一字段的值相等檢查,選擇運營商在$或經營$」。

1

「雖然‘$或者’永遠是可行的,用‘$在’只要有可能作爲查詢優化器 更有效地處理它。」

此外「$ in」具有更高的可讀性。

編號:MongoDB的權威指南

0

$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 } ] }) 

注意:賬戶是您的收藏名稱