我們想使用「超指定」find()查詢來過濾MongoDB集合。例如:我們要過濾的集合collection A
具有包含一組屬性需求的文檔。示例是文檔a
,其包含要求{req: age:{min:20,max:30}}
和b
,其包含要求{req: gender:male}
。如何使用謂詞來最好地過濾MongoDB集合
我們也有文件,d
,從collection D
包含以下屬性:d = {age:21, gender: male}
。
在這種情況下,無論是a
和b
應在一組文檔d
可享有,爲d
滿足了這兩個要求。
但是,如果我們包括所有在find
查詢d
的屬性,我們得到db.A.find({d.age > req.age.min, d.age < req.age.max, d.gender: req.gender})
,這將排除我們的結果都a
和b
。
什麼是選擇所有的文件,因爲d
可含有大於文件A指定要求更多的屬性,最好的方式A
是d
滿足了要求,並在A
的要求和D
屬性不是固定的?我們希望避免在所有A.req
文檔中指定D
中的所有可能屬性,因爲我們希望我們的要求儘可能靈活。