1
我需要只檢索有format.prices
陣列中的至少一個元素的記錄和price
是0到0.99之間和每一個元素:
所以這個工作得很好的price
比較:
{ 'formats.prices': { $not: { $elemMatch: { price: { $gt: 0, $lte: 0.99 } } } } }
但我怎麼可以添加像$not: { $size: 0 }
條件也排除了formats.prices
沒有在所有的元素嗎?
這是更好喜歡它。假設你有一個關於「formats.prices.price」的索引(這可能是一個好主意,考慮到你想要進行範圍查詢,儘管現在是排除在外),那麼這裏的$ exists測試可以實際使用它, $ not:{$ size:0}'不能。儘管如此,對於積極的價格來說,除非你的真實意圖是數組中沒有價格落入該範圍內,否則做一個積極匹配'{'formats.prices.price':{$ gt:0.99}}'會更好。 。這實際上是你如何提出問題的反駁。 –
非常感謝@BlakesSeven很高興這是最好的選擇,對於應用程序的意圖是我誤解了這個問題,因爲我需要沒有價格落在該範圍內(並且至少不是一個)。 (更新它) –