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

MongoDBでnull値をチェックする方法|$type演算子の使い方を解説

MongoDBでは、フィールドが明示的に null を持つドキュメントだけを抽出したい場合、$type 演算子を使うのが最も確実な方法です。ここでは Null 型(タイプ番号 10)を利用して、null値のチェックを行う手順を解説します。

まず、参考として主なBSON型とそのエイリアスの一覧を確認しておきましょう。

番号エイリアス
Double1"double"
String2"string"
Object3"object"
Array4"array"
Binary data5"binData"
Undefined6"undefined"
ObjectId7"objectId"
Boolean8"bool"
Date9"date"
Null10"null"
Regular Expression11"regex"

nullを検索する基本構文

タイプ10、つまりnullを検索するための構文は以下の通りです。

db.yourCollectionName.find({"yourFieldName":{ $type: 10 } });

この構文を実行すると、指定したフィールドがnull値を持つドキュメントのみが取得されます。空文字列("")や、フィールド自体が存在しないドキュメントは除外される点に注意してください。

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

それでは、実際にドキュメントを含むコレクションを作成してみましょう。数値、空文字列、null、フィールドなしのドキュメントなど、さまざまなパターンを挿入します。

> db.mongoDbEqualDemo.insertOne({"Age":34});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cd7e9121a844af18acdffa3")
}
> db.mongoDbEqualDemo.insertOne({"Age":""});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cd7e9161a844af18acdffa4")
}
> db.mongoDbEqualDemo.insertOne({"Age":null});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cd7e9191a844af18acdffa5")
}
> db.mongoDbEqualDemo.insertOne({"Age":56});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cd7e91e1a844af18acdffa6")
}
> db.mongoDbEqualDemo.insertOne({});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cd7e9261a844af18acdffa7")
}
> db.mongoDbEqualDemo.insertOne({"Age":null});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cd7e92e1a844af18acdffa8")
}

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

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

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

実行結果は以下のようになります。

{ "_id" : ObjectId("5cd7e9121a844af18acdffa3"), "Age" : 34 }
{ "_id" : ObjectId("5cd7e9161a844af18acdffa4"), "Age" : "" }
{ "_id" : ObjectId("5cd7e9191a844af18acdffa5"), "Age" : null }
{ "_id" : ObjectId("5cd7e91e1a844af18acdffa6"), "Age" : 56 }
{ "_id" : ObjectId("5cd7e9261a844af18acdffa7") }
{ "_id" : ObjectId("5cd7e92e1a844af18acdffa8"), "Age" : null }

null値のみを抽出するクエリ

続いて、nullと等しい値を持つドキュメントだけをチェックするクエリです。

> db.mongoDbEqualDemo.find({"Age":{ $type: 10 } });

実行すると、Ageフィールドがnullの2件のドキュメントのみが出力されます。

{ "_id" : ObjectId("5cd7e9191a844af18acdffa5"), "Age" : null }
{ "_id" : ObjectId("5cd7e92e1a844af18acdffa8"), "Age" : null }

このように、$type: 10 を指定することで、null値が明示的に設定されたドキュメントだけを正確にフィルタリングできます。数値や空文字列、フィールドが存在しないドキュメントは結果に含まれないため、意図した通りのデータ抽出が可能です。

  1. JavaScriptでnull値をチェックする方法【厳密等価演算子の使い方】

    JavaScriptでnull値をチェックする基本 JavaScriptで変数がnullかどうかを判定するには、変数の値とnullを比較します。このとき、厳密等価演算子(===)を使用するのが確実で推奨される方法です。 厳密等価演算子(===)は、値だけでなくデータ型まで一致しているかを確認するため、意図しない型変換による誤判定を防ぐことができます。一方、通常の等価演算子(==)はnullとundefinedを等しいとみなしてしまうため、厳密なnullチェックには不向きです。 コード例 以下のコードを実行すると、変数の値がnullかどうかをチェックできます。 <html>

  2. スターグラフの判定方法:隣接行列を用いたアルゴリズムとC++実装例

    グラフが与えられたとき、そのグラフがスターグラフ(star graph)であるかどうかを判定する問題について解説します。スターグラフとは、1つの中心頂点(ハブ)が他のすべての頂点に接続され、周辺の頂点同士は互いに接続されていない木構造の一種で、全体の形が星のように見えることからこの名前が付いています。 判定には、グラフを走査して「次数が1の頂点の個数」と「次数が n−1 の頂点の個数」を数えます(ここで n はグラフの頂点数です)。次数1の頂点が n−1 個存在し、かつ次数 n−1 の頂点がちょうど1個存在する場合、そのグラフはスターグラフであると判定できます。 入力と出力 入力(隣接行列