MongoDBオブジェクトから属性(フィールド)一覧を取得する方法
MongoDBのドキュメント(オブジェクト)から属性(フィールド名とその値)の一覧を取得したい場合、for...in ループを使ってドキュメント内のキーと値を順番に取り出すのが簡単な方法です。この記事では、実際にコレクションを作成し、属性一覧を抽出する手順を解説します。
1. サンプルコレクションの作成
まず、insertOne() メソッドを使ってサンプルドキュメントを挿入したコレクションを作成します。
> db.getAttributeListDemo.insertOne({
... "StudentId": 101,
... "StudentName": "John",
... "StudentAdmissionDate": new ISODate('2019-01-12'),
... "StudentSubjects": ["MongoDB", "Java", "MySQL"]
... });
{
"acknowledged" : true,
"insertedId" : ObjectId("5cbdfcc9ac184d684e3fa269")
}
これで「getAttributeListDemo」というコレクションに、学生情報を含む1件のドキュメントが登録されました。
2. 登録したドキュメントの確認
find() メソッドに pretty() を組み合わせると、コレクション内のすべてのドキュメントを見やすい形式で表示できます。
> db.getAttributeListDemo.find().pretty();
実行結果は以下の通りです。
{
"_id" : ObjectId("5cbdfcc9ac184d684e3fa269"),
"StudentId" : 101,
"StudentName" : "John",
"StudentAdmissionDate" : ISODate("2019-01-12T00:00:00Z"),
"StudentSubjects" : [
"MongoDB",
"Java",
"MySQL"
]
}
3. 属性一覧を取得するクエリ
それでは本題です。findOne() メソッドでドキュメントを1件取得し、for...in ループで各キー(属性名)と値を取り出します。typeof 演算子を組み合わせることで、値のデータ型も同時に確認できます。
> var myDocument = db.getAttributeListDemo.findOne();
> for (myKey in myDocument) {
... var originalValue = myDocument[myKey];
... print(myKey + "(" + typeof(originalValue) + "): " + originalValue);
... };
実行すると、次のような出力が得られます。
_id(object): 5cbdfcc9ac184d684e3fa269 StudentId(number): 101 StudentName(string): John StudentAdmissionDate(object): Sat Jan 12 2019 05:30:00 GMT+0530 (India Standard Time) StudentSubjects(object): MongoDB,Java,MySQL
ポイントの解説
- findOne():条件に一致する最初のドキュメントを1件だけ返します。ここでは引数なしで呼び出しているため、先頭のドキュメントが取得されます。
- for...in ループ:JavaScriptの構文で、オブジェクトのすべての列挙可能なプロパティ(=MongoDBドキュメントのフィールド)を順に処理できます。
- typeof 演算子:値の型(number、string、objectなど)を文字列で返します。配列や日付も「object」として判定される点に注意してください。
この方法を使えば、スキーマが柔軟なMongoDBでも、ドキュメントが持つフィールド名とその型・値を動的に把握できます。アプリケーション側でのデバッグや、未知のドキュメント構造の調査に役立つテクニックです。
-
MongoDBコレクションから一意の値(重複なし)を取得する方法【distinct()の使い方】
MongoDBでコレクション内の重複データを除外し、一意の値だけを取得したい場合は、distinct()メソッドを使用します。distinct()は、指定したフィールドに含まれる重複しない値を1つのコレクション全体から検索し、その結果を配列として返します。サンプルコレクションの作成まず、insertOne()を使ってドキュメントを挿入し、コレクションを作成します。> db.demo704.insertOne({"LanguageCode":"hi"}); { "acknowledged" : true, &quo
-
Pythonでリストから一意の値(重複しない要素)を抽出する3つの方法
Pythonのリストは、[](角括弧)の中に複数の要素を格納できるデータ構造です。異なるデータ型を混在させることもでき、重複した値を含むこともあります。本記事では、リストから重複を除いた一意の値だけを取り出す方法を、代表的な3つのアプローチに分けて解説します。方法1:append() と not in を使う方法まず空の新しいリストを作成し、元のリストの要素を1つずつ確認しながら、まだ新しいリストに存在しない場合のみ追加していく方法です。forループと not in 条件を組み合わせることで、要素の存在チェックを行い、未登録の要素だけを追加できます。コード例def catch_unique(l