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

MongoDBコレクション内のすべてのキー名を取得する方法

MongoDBでコレクション内のすべてのキー(フィールド名)を取得したい場合、findOne()メソッドとJavaScriptのfor...inループを組み合わせることで実現できます。この記事では、その具体的な手順をサンプルコード付きで解説します。

すべてのキー名を取得する基本構文

コレクション内のすべてのキー名を取得するための構文は以下のとおりです。

var allKeys = db.yourCollectionName.findOne();

for (var myKey in allKeys) {
  print(myKey);
}

findOne()はコレクションから最初のドキュメントを1件取得するメソッドです。取得したドキュメントの各キーをfor...inループで順番に取り出し、print()で出力することで、すべてのキー名を表示できます。

サンプルコレクションの作成

実際の動作を確認するために、まずドキュメントを含むコレクションを作成しましょう。ここでは「studentGetKeysDemo」という名前のコレクションを使用します。

以下のクエリでドキュメントを挿入します。

> db.studentGetKeysDemo.insert({
...   "StudentId": 1,
...   "StudentName": "Larry",
...   "StudentAge": 23,
...   "StudentAddress": "US",
...   "StudentHobby": ["Cricket", "Football", "ReadingNovel"],
...   "StudentMathMarks": 89,
...   "StudentDOB": ISODate('1998-04-06')
... });

実行結果は以下のとおりです。

WriteResult({ "nInserted" : 1 })

WriteResult({ "nInserted" : 1 })と表示されれば、1件のドキュメントが正常に挿入されたことを意味します。

挿入したドキュメントの確認

find()メソッドを使って、コレクション内のすべてのドキュメントを表示してみましょう。

> db.studentGetKeysDemo.find().pretty();

実行結果:

{
    "_id" : ObjectId("5c6c12dd68174aae23f5ef5f"),
    "StudentId" : 1,
    "StudentName" : "Larry",
    "StudentAge" : 23,
    "StudentAddress" : "US",
    "StudentHobby" : [
        "Cricket",
        "Football",
        "Reading Novel"
    ],
    "StudentMathMarks" : 89,
    "StudentDOB" : ISODate("1998-04-06T00:00:00Z")
}

このドキュメントには、_idを含めて8つのキーが存在することが確認できます。

すべてのキー名を取得するクエリの実行

それでは、「studentGetKeysDemo」コレクションからすべてのキー名を取得してみましょう。

> var allKeys = db.studentGetKeysDemo.findOne();
> for (var myKey in allKeys) { print(myKey); }

実行すると、以下のようにすべてのキー名が表示されます。

_id
StudentId
StudentName
StudentAge
StudentAddress
StudentHobby
StudentMathMarks
StudentDOB

注意点

この方法で取得できるのは、findOne()が返した最初の1件のドキュメントに含まれるキーのみです。コレクション内のドキュメントごとにキーが異なる場合(スキーマが統一されていない場合)、すべてのキーを網羅したいときは、集計フレームワーク(Aggregation Pipeline)の$objectToArray$groupを活用する方法もあります。用途に応じて使い分けるとよいでしょう。

まとめ

MongoDBのコレクションからすべてのキー名を取得するには、findOne()でドキュメントを1件取得し、for...inループでキーを順に出力するのがシンプルで効果的です。スキーマの確認やデバッグの際にぜひ活用してみてください。

  1. MongoDBコレクションの全キー(フィールド名)を取得する方法まとめ

    この記事は2019年1月18日にObjectRocket.com/blogで公開された内容をもとにしています。 MongoDB®のコレクションに含まれるすべてのキーを把握することは、スキーマの検証、フィールド名のタイプミスのデバッグ、設定すべきでないフィールドの発見など、さまざまな場面で役立ちます。本記事では、MongoDBコレクション内の全キー名を取得する複数の方法を、状況別にわかりやすく解説します。 まず検討したい:ODMやマネージドサービスの活用 ObjectRocketをはじめとする多くのMongoDB-as-a-Service事業者は、ユーザーインターフェース(UI)上で簡単にキーを

  2. MongoDBコレクション内の全キー名を取得する方法|MapReduce・Aggregation・シェルなど状況別に解説

    スキーマの検証、フィールド名のタイプミスのデバッグ、設定されるべきではないフィールドの発見などを行うには、まずMongoDBコレクション内にどのようなキーが存在するのかを把握しておく必要があります。多くのMongoDB-as-a-Service事業者は、UI上で手軽にこれを実現できる機能を提供しています(ObjectRocketもそのひとつです)。また、経験豊富なMongoDBユーザーの多くは、JavaScript向けのMongooseやPython向けのMongoengineといったオブジェクトドキュメントマッパー(ODM)を導入しています。ODMを使えば、アプリケーション向けの一貫性のある