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

MongoDBでフィールドのデータ型を確認する方法|typeof演算子の使い方を解説

MongoDBでフィールドのデータ型を確認する方法

MongoDBでは、JavaScriptのtypeof演算子を使うことで、コレクション内の各フィールドのデータ型を簡単に調べることができます。スキーマレスなMongoDBでは同じコレクション内でもフィールドの型が異なるケースがあるため、データ検証やデバッグの際に役立つテクニックです。

基本構文

データ型を調べるには、以下のようにfindOne()でドキュメントを取得し、目的のフィールドにtypeofを適用します。

typeof db.yourCollectionName.findOne().yourFieldName;

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

まず、ドキュメントを含むコレクションを作成しましょう。

> db.findDataTypeDemo.insertOne({"ClientName":"Chris","isMarried":false});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5ccf2064dceb9a92e6aa1952")
}

登録したドキュメントの確認

findOne()メソッドを使うと、コレクションからドキュメントを1件取得して表示できます。

> db.findDataTypeDemo.findOne();

実行すると、次のような出力が得られます。

{
    "_id" : ObjectId("5ccf2064dceb9a92e6aa1952"),
    "ClientName" : "Chris",
    "isMarried" : false
}

フィールドのデータ型を調べる

それでは、typeofを使って特定のフィールドのデータ型を確認してみましょう。まずはブール値(真偽値)のフィールドです。

> typeof db.findDataTypeDemo.findOne().isMarried;

実行結果:

Boolean

次に、文字列型のフィールドを確認します。

> typeof db.findDataTypeDemo.findOne().ClientName;

実行結果:

String

フィールドの値そのものを取得する

typeofを付けずにクエリを実行すれば、データ型ではなくフィールドの値そのものを取得できます。

> db.findDataTypeDemo.findOne().ClientName;
Chris
> db.findDataTypeDemo.findOne().isMarried;
false

まとめ

findOne()でドキュメントを取得し、typeof演算子を組み合わせることで、MongoDBの任意のフィールドのデータ型(String、Boolean、Numberなど)を手軽に確認できます。また、typeofを外せば値そのものも取得可能です。柔軟なスキーマを持つMongoDBを扱う際は、ぜひ覚えておきたい基本操作の一つです。

  1. MongoDBで「_id」以外のすべてのフィールド値を表示するクエリ方法

    MongoDBでは、ドキュメントを取得すると自動的に _id フィールドが含まれますが、場合によってはこのフィールドを除外し、他のフィールド値だけを表示したいことがあります。本記事では、コレクションの作成から、_id を除いたすべてのフィールド値を表示するまでの一連の手順を解説します。1. ドキュメントを含むコレクションを作成するまずは、サンプルとなるコレクションを作成しましょう。以下のコマンドを実行して、複数のドキュメントを一括挿入します。> db.demo590.insert([...     { "Name": "

  2. MongoDBの埋め込みドキュメントから特定の要素を抽出する方法($unwind・$match・$projectの活用)

    MongoDBでは、配列形式の埋め込みドキュメントから特定の条件に合う要素だけを取り出したい場面がよくあります。そのような場合は、集計(Aggregation)パイプラインで $unwind、$match、$project を組み合わせることで、目的のデータを効率的に抽出できます。コレクションの作成とドキュメントの挿入まず、insertOne() メソッドを使って、学生情報を配列として持つコレクションを作成します。> db.demo744.insertOne( ... { ... studentInformation: ... [ ...