本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
$filter
Amazon DocumentDB 中的$filter運算子用於將篩選條件表達式套用至陣列的每個元素,並傳回僅包含符合指定條件之元素的陣列。當您需要對文件中的陣列欄位執行複雜的篩選操作時,此運算子非常有用。
參數
-
input:要篩選的陣列欄位。 -
as:用於cond表達式內input陣列每個元素的變數名稱。 -
cond:布林值表達式,決定指定的元素是否應包含在輸出陣列中。
範例 (MongoDB Shell)
下列範例示範如何使用 $filter運算子來投影每個訂單的客戶,並建立新的陣列欄位 paidItems,只包含價格大於 15 的項目陣列中的項目。基本上,它會篩選每個訂單的項目,只包含成本超過 15 的產品。
建立範例文件
db.orders.insertMany([ { _id: 1, customer: "abc123", items: [ { name: "Product A", price: 10, qty: 2 }, { name: "Product B", price: 20, qty: 1 } ]}, { _id: 2, customer: "def456", items: [ { name: "Product C", price: 5, qty: 3 }, { name: "Product D", price: 15, qty: 4 } ]}, { _id: 3, customer: "ghi789", items: [ { name: "Product E", price: 8, qty: 3 }, { name: "Product F", price: 12, qty: 1 } ]} ]);
查詢範例
db.orders.aggregate([ { $project: { customer: 1, paidItems: { $filter: { input: "$items", as: "item", cond: { $gt: ["$$item.price", 15] } } } } } ]).pretty();
輸出
[
{
_id: 1,
customer: 'abc123',
paidItems: [ { name: 'Product B', price: 20, qty: 1 } ]
},
{ _id: 2, customer: 'def456', paidItems: [] },
{ _id: 3, customer: 'ghi789', paidItems: [] }
]
程式碼範例
若要檢視使用 $filter命令的程式碼範例,請選擇您要使用的語言標籤: