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ループでキーを順に出力するのがシンプルで効果的です。スキーマの確認やデバッグの際にぜひ活用してみてください。
-
MongoDBコレクションの全キー(フィールド名)を取得する方法まとめ
この記事は2019年1月18日にObjectRocket.com/blogで公開された内容をもとにしています。 MongoDB®のコレクションに含まれるすべてのキーを把握することは、スキーマの検証、フィールド名のタイプミスのデバッグ、設定すべきでないフィールドの発見など、さまざまな場面で役立ちます。本記事では、MongoDBコレクション内の全キー名を取得する複数の方法を、状況別にわかりやすく解説します。 まず検討したい:ODMやマネージドサービスの活用 ObjectRocketをはじめとする多くのMongoDB-as-a-Service事業者は、ユーザーインターフェース(UI)上で簡単にキーを
-
MongoDBコレクション内の全キー名を取得する方法|MapReduce・Aggregation・シェルなど状況別に解説
スキーマの検証、フィールド名のタイプミスのデバッグ、設定されるべきではないフィールドの発見などを行うには、まずMongoDBコレクション内にどのようなキーが存在するのかを把握しておく必要があります。多くのMongoDB-as-a-Service事業者は、UI上で手軽にこれを実現できる機能を提供しています(ObjectRocketもそのひとつです)。また、経験豊富なMongoDBユーザーの多くは、JavaScript向けのMongooseやPython向けのMongoengineといったオブジェクトドキュメントマッパー(ODM)を導入しています。ODMを使えば、アプリケーション向けの一貫性のある