$in
操作符用於選擇某個域的值等於其後指定的數組中的任意值的文檔。
{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }
域本身可以是數組,此時$in將會選擇域數組中有至少任意一值等於其後指定的數組中的任意一個值的文檔。
單值域的$in匹配
db.inventory.find( { qty: { $in: [ 5, 15 ] } } )
選擇所有inventory集合中qty域的值爲5或者15的文檔。該查詢可以用$or
表達,但是$in應該優先被使用。
數組域的$in匹配值
inventory擁有如下結構,tags域爲數組
{ _id: 1, item: "abc", qty: 10, tags: [ "school", "clothing" ], sale: false }
db.inventory.update(
{ tags: { $in: ["appliances", "school"] } },
{ $set: { sale: true } }
)
以上操作執行後,tags數組中包含任意一個值爲“appliances”, “school”的文檔的sale將會被更新爲true
。
$in與正則表達式
$in
支持/pattern/
模式的正則匹配,$in
內不支持使用$regex
db.inventory.find( { tags: { $in: [ /^be/, /^st/ ] } } )
以上查詢將查找到tags數組中包含任意一個值以"be"或"st"開頭的所有文檔。