MongoDBで配列内の要素数をカウントする方法
MongoDBで配列内の要素数をカウントする基本
MongoDBで配列(Array)内のアイテム数をカウントするには、lengthプロパティを使用します。この記事では、実際にコレクションを作成し、配列の要素数を取得するまでの手順を実行例付きで解説します。
1. コレクションにドキュメントを挿入する
まず、insertOne()メソッドを使って、配列フィールドを持つドキュメントを含むコレクションを作成しましょう。
> db.demo440.insertOne(
... {
... "Name":"Chris",
... "ListOfFriends":["John","Sam","Mike"]
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e78c63cbbc41e36cc3caeb5")
}
>
> db.demo440.insertOne(
... {
... "Name":"David",
... "ListOfFriends":["Mike","Bob","Carol"]
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e78c63cbbc41e36cc3caeb6")
}上記の例では、「Chris」と「David」という2人のユーザードキュメントを作成し、それぞれに友人の名前を格納した配列フィールド「ListOfFriends」を持たせています。
2. find()メソッドですべてのドキュメントを表示する
find()メソッドを使うと、コレクション内のすべてのドキュメントを確認できます。
> db.demo440.find();
これにより、以下のような出力が得られます。
{ "_id" : ObjectId("5e78c63cbbc41e36cc3caeb5"), "Name" : "Chris", "ListOfFriends" : [ "John", "Sam", "Mike" ] }
{ "_id" : ObjectId("5e78c63cbbc41e36cc3caeb6"), "Name" : "David", "ListOfFriends" : [ "Mike", "Bob", "Carol" ] }3. lengthプロパティで配列の要素数を取得する
配列内のアイテム数をカウントするには、findOne()で対象のドキュメントを取得した後、配列フィールドに対してlengthプロパティを参照します。以下は、「David」の友人リストの要素数を取得するクエリの例です。
>db.demo440.findOne({'Name':'David'}).ListOfFriends.length;実行すると、次の出力が得られます。
3
このように、findOne()で取得したドキュメントの配列フィールドに直接.lengthを付けるだけで、簡単に要素数を取得できます。
補足:複数ドキュメントの配列サイズを一括取得する場合
単一ドキュメントではなく、コレクション内の全ドキュメントの配列サイズを一度に確認したい場合は、集計パイプライン(Aggregation Pipeline)の$size演算子が便利です。
> db.demo440.aggregate([
... { $project: { Name: 1, friendCount: { $size: "$ListOfFriends" } } }
... ]);このクエリを実行すると、各ドキュメントごとに配列の要素数が「friendCount」フィールドとして出力され、一覧形式で確認できます。用途に応じてlengthプロパティと$size演算子を使い分けるとよいでしょう。
-
MongoDBのオブジェクト配列からアイテムを取得する方法
MongoDBでオブジェクト配列からアイテムを取得するには?MongoDBのドキュメント内にネストされたオブジェクト配列から特定のアイテムを取り出したい場合は、aggregate()メソッドを使用します。集計パイプラインの各ステージを組み合わせることで、配列の展開・絞り込み・集約を柔軟に行えます。まずは、サンプルコレクションにドキュメントを作成してみましょう。> db.demo459.insertOne( ... { _id : 1, ... Information : [ ... { ... Name : Chris, ... _id : new O
-
MongoDBで配列要素をグループ化し、同じ価格の製品数をカウントする方法
MongoDBで配列内のアイテムをグループ化するには、$group演算子を$sortと組み合わせて使用します。この記事では、実際にコレクションを作成しながら、同じ価格の製品をカウントする手順を詳しく解説します。サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成しましょう。以下の例では、複数の製品情報(ProductInformation)を配列として持つドキュメントを挿入します。> db.demo566.insertOne( ... { ... ... ProductInformation : [ ... { ... Produ