$arrayElemAt(集計)
定義
互換性
次の環境でホストされる配置には $arrayElemAt
を使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
$arrayElemAt
の構文は次のとおりです。
{ $arrayElemAt: [ <array>, <idx> ] }
<array>
式は、配列に解決される任意の有効な式にすることができます。
<idx>
式は、整数に解決される任意の有効な式にすることができます。
式の詳細については、「式 」を参照してください。
動作
<idx>
式がゼロまたは正の整数に解決される場合、$arrayElemAt
は、配列の先頭から数えてidx
の位置にある要素を返します。<idx>
式が負の整数に解決される場合、$arrayElemAt
は配列の末尾から数えてidx
の位置にある要素を返します。idx
が配列の境界を超える場合、$arrayElemAt
は結果を返しません。<array>
式が未定義の配列に解決される場合、$arrayElemAt
は、null
を返します。
例 | 結果 |
---|---|
{ $arrayElemAt: [ [ 1, 2, 3 ], 0 ] } | 1 |
{ $arrayElemAt: [ [ 1, 2, 3 ], -2 ] } | 2 |
{ $arrayElemAt: [ [ 1, 2, 3 ], 15 ] } | |
{ $arrayElemAt: [ "$undefinedField", 0 ] } | null |
例
users
という名前のコレクションには次のドキュメントが含まれています。
{ "_id" : 1, "name" : "dave123", favorites: [ "chocolate", "cake", "butter", "apples" ] } { "_id" : 2, "name" : "li", favorites: [ "apples", "pudding", "pie" ] } { "_id" : 3, "name" : "ahn", favorites: [ "pears", "pecans", "chocolate", "cherries" ] } { "_id" : 4, "name" : "ty", favorites: [ "ice cream" ] }
次の例では、favorites
配列の最初と最後の要素を返します。
db.users.aggregate([ { $project: { name: 1, first: { $arrayElemAt: [ "$favorites", 0 ] }, last: { $arrayElemAt: [ "$favorites", -1 ] } } } ])
この操作は次の結果を返します。
{ "_id" : 1, "name" : "dave123", "first" : "chocolate", "last" : "apples" } { "_id" : 2, "name" : "li", "first" : "apples", "last" : "pie" } { "_id" : 3, "name" : "ahn", "first" : "pears", "last" : "cherries" } { "_id" : 4, "name" : "ty", "first" : "ice cream", "last" : "ice cream" }