MongoDBコレクション内のドキュメント数を一括取得する方法
MongoDBでデータベース内の各コレクションに含まれるドキュメント数を確認したい場合、db.getCollectionNames()とcount()メソッドを組み合わせることで、すべてのコレクションのドキュメント数を一覧形式で取得できます。
基本構文
以下が、コレクション内のドキュメント数を取得するための基本的な構文です。
db.getCollectionNames().map(function(anyVariableName) {
return { "yourVariableName": yourVariableName, "count": db[yourVariableName].count() }
});この構文では、まずgetCollectionNames()でデータベース内の全コレクション名を取得し、その各コレクションに対してcount()を実行することで、コレクション名とドキュメント数をペアにしたオブジェクトの配列を返します。
実際の実行例
それでは、「test」データベースに対して上記の構文を実装してみましょう。変数名としてColNameを使用し、出力のキーにはTotalDocumentを指定しています。
> db.getCollectionNames().map(function(ColName) {
... return { "ColName": ColName, "TotalDocument": db[ColName].count() }
... });出力結果
このクエリを実行すると、以下のように各コレクション名とそのドキュメント数の一覧が出力されます。
[
{
"ColName" : "ConvertStringToDateDemo",
"TotalDocument" : 4
},
{
"ColName" : "Employee_Information",
"TotalDocument" : 2
},
{
"ColName" : "IdUpdateDemo",
"TotalDocument" : 3
},
{
"ColName" : "IndexingDemo",
"TotalDocument" : 1
},
{
"ColName" : "NotAndDemo",
"TotalDocument" : 5
},
{
"ColName" : "ProductsInformation",
"TotalDocument" : 2
},
{
"ColName" : "addCurrentDateTimeDemo",
"TotalDocument" : 4
},
{
"ColName" : "addFieldDemo",
"TotalDocument" : 1
},
...
]このように、データベース内に存在するすべてのコレクション(例では200以上のコレクション)について、それぞれのドキュメント総数が一覧で表示されます。ドキュメント数が「0」のコレクションも存在する場合は、その旨も確認できます。
補足:新バージョンでの注意点
MongoDB 4.0以降では、旧来のcount()メソッドは非推奨(deprecated)となっています。今後の開発では、用途に応じて以下のメソッドを使い分けることが推奨されています。
- countDocuments() — 正確なドキュメント数を取得したい場合に使用します。
- estimatedDocumentCount() — メタデータを利用して高速に概算数を取得したい場合に使用します。
例えば、特定のコレクションの正確なドキュメント数だけを取得したい場合は、次のように記述します。
db.yourCollectionName.countDocuments()状況に応じて適切なメソッドを選択することで、パフォーマンスと正確性のバランスを取った運用が可能になります。
-
MongoDBの$groupと$sumを使ってドキュメント内の重複データの出現回数を取得する方法
MongoDBでグループ集計を行い、同じ値が何回出現しているか(重複回数)を取得したい場合は、集計パイプラインの $group 演算子と $sum 演算子を組み合わせるのが定番の手法です。1. サンプルコレクションの作成まず、動作確認用に「Marks(点数)」フィールドを持つドキュメントをいくつか挿入したコレクションを作成します。> db.demo676.insertOne({Marks:87}); { acknowledged : true, insertedId : ObjectId(5ea41eed04263e90dac943f2) } > db.demo67
-
MongoDBでコレクション内のドキュメント数を制限する方法(Capped Collectionの使い方)
MongoDBでコレクション内のドキュメント数を制限するには?MongoDBのコレクションに保存できるドキュメントの数を制限したい場合は、「capped: true」を指定してCapped Collection(キャップドコレクション)を作成します。作成時にsize(最大サイズ)やmax(最大ドキュメント数)を設定することで、コレクションの容量と件数の上限を定義できます。Capped CollectionとはCapped Collectionは、挿入順にドキュメントを保持し、上限に達すると最も古いドキュメントから自動的に削除される固定サイズのコレクションです。ログデータやキャッシュなど、最新の