MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBのすべてのコレクションをループ処理してクエリを実行する方法

MongoDBのすべてのコレクションをループ処理してクエリを実行する方法

まず、getCollectionNames()メソッドを使って、データベース内のすべてのコレクション名を取得する必要があります。

ここでは、データベース名を「test」とします。MongoDBのすべてのコレクションをループ処理し、各コレクションの最新ドキュメントを取得して、そのObjectIdからタイムスタンプを表示するクエリを実行してみましょう。クエリは以下の通りです。

> db.getCollectionNames().forEach(function(collectioNameDemo)
... {
    ... var nextDemo = db[(collectioNameDemo) ].find().sort({_id:-1}).limit(1);
    ... if (nextDemo.hasNext())
    ... {
       ... printjson(nextDemo.next()._id.getTimestamp());
    ... }
... });

以下が出力結果です。

ISODate("2019-02-21T18:52:43Z")
ISODate("2019-03-19T17:49:00Z")
ISODate("2019-03-06T15:40:12Z")
ISODate("2019-03-15T16:31:50Z")
ISODate("2019-02-21T15:40:52Z")
ISODate("2019-03-06T06:14:37Z")
ISODate("2019-02-21T19:29:15Z")
ISODate("2019-03-15T13:35:33Z")
ISODate("2019-03-14T21:13:58Z")
ISODate("2019-03-18T22:02:54Z")
ISODate("2019-03-22T18:01:45Z")
ISODate("2019-03-06T16:21:14Z")
ISODate("2019-02-20T15:04:32Z")
ISODate("2019-03-06T07:45:42Z")
ISODate("2019-03-19T12:33:17Z")
ISODate("2019-03-20T21:39:21Z")
ISODate("2019-03-15T16:44:26Z")
ISODate("2019-03-22T06:20:45Z")
ISODate("2019-02-21T16:40:55Z")
ISODate("2019-02-21T12:45:20Z")
ISODate("2019-03-06T16:05:48Z")
ISODate("2019-03-06T16:00:08Z")
ISODate("2019-02-28T12:43:56Z")
ISODate("2019-03-20T22:11:41Z")
ISODate("2019-03-06T05:56:45Z")
ISODate("2019-03-06T07:34:12Z")
ISODate("2019-03-14T21:00:16Z")
ISODate("2019-02-28T10:33:39Z")
ISODate("2019-03-06T05:11:10Z")
ISODate("2019-02-28T09:44:28Z")
ISODate("2019-03-06T10:13:22Z")
ISODate("2019-03-17T21:35:26Z")

クエリの解説

このクエリの仕組みを簡単に解説します。

  • db.getCollectionNames()で、データベース「test」内のすべてのコレクション名を配列として取得します。
  • forEach()を使い、各コレクション名を1つずつ処理します。
  • 各コレクションに対してfind().sort({_id:-1}).limit(1)を実行し、ObjectIdの降順で並べ替えた最新のドキュメントを1件だけ取得します。
  • hasNext()でドキュメントの存在を確認した上で、getTimestamp()メソッドを呼び出し、ObjectIdに埋め込まれた作成日時をISODate形式で表示します。

このように、MongoDBのObjectIdにはドキュメントの作成時刻が自動的に記録されているため、明示的なタイムスタンプフィールドがなくても、各コレクションの最新データがいつ作成されたのかを簡単に確認できます。

  1. MongoDBでファイル名と保存場所を格納するクエリの書き方

    MongoDBでは、ファイル名とその保存場所(パス)をドキュメントとして簡単に格納できます。ここでは、insertOne()メソッドを使ってコレクションにドキュメントを挿入し、ファイル情報を保存する具体的な手順を紹介します。サンプルコレクションへのドキュメント挿入まず、例として「demo645」というコレクションを作成し、複数のファイル情報を登録してみましょう。> db.demo645.insertOne( ... { ... fileName : MongoDB Program, ... fileLocation:C:/users/workspace

  2. MongoDBで値を重複なく選択(distinct)してカウントするクエリの書き方

    MongoDBでは、アグリゲーションフレームワーク(集計パイプライン)を活用することで、配列内の値を重複なく抽出し、それぞれの出現回数をカウントできます。本記事では、insertOne()でサンプルデータを作成し、$unwindや$groupなどのステージを組み合わせてdistinct(一意)な値を選択・集計する具体的な手順を解説します。1. サンプルコレクションの作成まずは、ドキュメントを挿入してコレクションを作成します。各ドキュメントには「Name」と「Marks」を持つdetails配列が含まれています。> db.demo586.insertOne( ... {detail