$isArray(集計)
定義
$isArray
バージョン 3.2 で追加。
オペランドが配列であるかどうかを判断します。ブール値を返します。
$isArray
の構文は次のとおりです。{ $isArray: [ <expression> ] }
動作
<expression>
は任意の有効な式にすることができます。 式の詳細については、「式 」を参照してください。
例 | 結果 | ノート |
---|---|---|
{ $isArray: "hello" } | false | "hello" は、string として渡された string です。 |
{ $isArray: [ "hello" ] } | false | "hello" は、引数配列の一部として渡される string です。 |
{ $isArray: [ [ "hello" ] ] } | true | [ "hello" ] は、引数配列の一部として渡される配列です。 |
注意
集計式は、変数の数の引数を受け入れます。 これらの引数は通常、配列として渡されます。 ただし、 引数が単一の値の場合、配列でラップせずに引数を直接渡すことでコードを簡素化できます。
例
次のドキュメントを含むwarehouses
という名前のコレクションを作成します。
db.warehouses.insertMany( [ { _id : 1, instock: [ "chocolate" ], ordered: [ "butter", "apples" ] }, { _id : 2, instock: [ "apples", "pudding", "pie" ] }, { _id : 3, instock: [ "pears", "pecans" ], ordered: [ "cherries" ] }, { _id : 4, instock: [ "ice cream" ], ordered: [ ] } ] )
instock
ordered
フィールドと フィールドが配列であるかどうかを確認します。両方のフィールドが配列である場合は、それらを連結します。
db.warehouses.aggregate( [ { $project: { items: { $cond: { if: { $and: [ { $isArray: "$instock" }, { $isArray: "$ordered" } ] }, then: { $concatArrays: [ "$instock", "$ordered" ] }, else: "One or more fields is not an array." } } } } ] )
{ _id : 1, items : [ "chocolate", "butter", "apples" ] } { _id : 2, items : "One or more fields is not an array." } { _id : 3, items : [ "pears", "pecans", "cherries" ] } { _id : 4, items : [ "ice cream" ] }