$filter(集計)
MongoDB5.0 は 10 月2024 をもってサポートを終了します。このバージョンのドキュメントはサポート対象外になりました。 配置をアップグレードするには、 MongoDB を参照してください。5.0 60アップグレード手順 。
定義
互換性
次の環境でホストされる配置には $filter
を使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
$filter
の構文は次のとおりです。
{ $filter: { input: <array>, cond: <expression>, as: <string>, limit: <number expression> } }
フィールド | 仕様 |
---|---|
| 配列に解決される式。
|
| 式 は、ブール値に解決され、要素が出力配列に含まれるべきかどうかを判断するために使用されます。この式は、 |
| 任意。 |
|
式の詳細については、「式 」を参照してください。
動作
例 | 結果 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
|
例
コレクション sales
は、次のドキュメントを含みます。
{ _id: 0, items: [ { item_id: 43, quantity: 2, price: 10 }, { item_id: 2, quantity: 1, price: 240 } ] } { _id: 1, items: [ { item_id: 23, quantity: 3, price: 110 }, { item_id: 103, quantity: 4, price: 5 }, { item_id: 38, quantity: 1, price: 300 } ] } { _id: 2, items: [ { item_id: 4, quantity: 1, price: 23 } ] }
次の例では、items
配列をフィルタリングして、price
が 100
以上のドキュメントのみを含めます。
db.sales.aggregate([ { $project: { items: { $filter: { input: "$items", as: "item", cond: { $gte: [ "$$item.price", 100 ] } } } } } ])
この操作では、次の結果が得られます。
{ "_id" : 0, "items" : [ { "item_id" : 2, "quantity" : 1, "price" : 240 } ] } { "_id" : 1, "items" : [ { "item_id" : 23, "quantity" : 3, "price" : 110 }, { "item_id" : 38, "quantity" : 1, "price" : 300 } ] } { "_id" : 2, "items" : [ ] }