MongoDBのブール値クエリ構文とは?$eq・$ne演算子の使い方を実例で解説
MongoDBでブール値(true / false)を条件としてドキュメントを検索するには、比較演算子の $eq(等しい)や $ne(等しくない)を使用します。この記事では、サンプルコレクションを作成しながら、ブール値を扱うクエリの基本的な書き方を具体例とともに解説します。
サンプルコレクションの作成
まず、insertOne() メソッドを使って、isMarried というブール値フィールドを持つドキュメントを複数件登録したコレクションを作成します。
> db.booleanQueryDemo.insertOne({"UserName":"John","UserAge":23,"isMarried":true});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cc815c08f9e6ff3eb0ce44a")
}
> db.booleanQueryDemo.insertOne({"UserName":"Chris","UserAge":21,"isMarried":false});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cc815d08f9e6ff3eb0ce44b")
}
> db.booleanQueryDemo.insertOne({"UserName":"Robert","UserAge":24,"isMarried":false});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cc815dc8f9e6ff3eb0ce44c")
}
> db.booleanQueryDemo.insertOne({"UserName":"David","UserAge":26,"isMarried":true});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cc815ed8f9e6ff3eb0ce44d")
}
登録済みドキュメントの確認
find() メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。
> db.booleanQueryDemo.find().pretty();
実行すると、以下のような出力が得られます。
{
"_id" : ObjectId("5cc815c08f9e6ff3eb0ce44a"),
"UserName" : "John",
"UserAge" : 23,
"isMarried" : true
}
{
"_id" : ObjectId("5cc815d08f9e6ff3eb0ce44b"),
"UserName" : "Chris",
"UserAge" : 21,
"isMarried" : false
}
{
"_id" : ObjectId("5cc815dc8f9e6ff3eb0ce44c"),
"UserName" : "Robert",
"UserAge" : 24,
"isMarried" : false
}
{
"_id" : ObjectId("5cc815ed8f9e6ff3eb0ce44d"),
"UserName" : "David",
"UserAge" : 26,
"isMarried" : true
}
ケース1:値が false のドキュメントを検索する
ブール値が false と等しいドキュメントだけを取得したい場合は、$eq 演算子を使用します。
> db.booleanQueryDemo.find({isMarried: {$eq: false}}).pretty();
実行結果は以下の通りです。isMarried が false の2件のドキュメントのみが抽出されました。
{
"_id" : ObjectId("5cc815d08f9e6ff3eb0ce44b"),
"UserName" : "Chris",
"UserAge" : 21,
"isMarried" : false
}
{
"_id" : ObjectId("5cc815dc8f9e6ff3eb0ce44c"),
"UserName" : "Robert",
"UserAge" : 24,
"isMarried" : false
}
ケース2:値が true のドキュメントを検索する
ブール値が true のドキュメントを取得するには、$ne 演算子を使って「false ではない」という条件で検索します。
> db.booleanQueryDemo.find({isMarried: {$ne: false}}).pretty();
実行結果は以下の通りです。isMarried が true の2件のドキュメントが取得できました。
{
"_id" : ObjectId("5cc815c08f9e6ff3eb0ce44a"),
"UserName" : "John",
"UserAge" : 23,
"isMarried" : true
}
{
"_id" : ObjectId("5cc815ed8f9e6ff3eb0ce44d"),
"UserName" : "David",
"UserAge" : 26,
"isMarried" : true
}
まとめ
MongoDBでブール値を検索する際は、一致を調べるなら { フィールド名: { $eq: true/false } }、不一致を調べるなら { フィールド名: { $ne: true/false } } という構文を使用します。なお、単純な一致検索であれば { isMarried: false } のように演算子を省略して記述することも可能です。ただし $ne を使う場合、そのフィールド自体が存在しないドキュメントもマッチ対象になる点には注意してください。
-
JSPアクションのscope属性に指定できる4つの値とは?page・request・session・applicationを解説
JSPアクションにおけるscope属性の役割JSPのアクション要素において、scope属性はその要素のライフサイクル(生存期間)を識別するための重要な属性です。scope属性はid属性と密接な関係にあります。scope属性で指定された値によって、id属性に関連付けられたオブジェクトがどれくらいの期間保持されるかが決まるためです。scope属性に指定できる4つの値scope属性には、以下の4つの値を指定することができます。(a) page現在のJSPページ内でのみオブジェクトが有効になります。ページの処理が終わるとオブジェクトは破棄されます。最も狭いスコープです。(b) request同一のHT
-
C++のブール型の型指定子とは?bool型の基本と使い方を解説
C++におけるブール型の型指定子C++で真偽値(ブール値)を扱うための型指定子は bool です。この型は、true(真) または false(偽) の2つの値のみを持つことができます。基本的な宣言方法bool型の変数は、次のように宣言して初期化できます。bool myBoolean = true;また、falseを代入することも可能です。bool isActive = false;bool型の特徴取り得る値:true または false のみ(trueは1、falseは0としても扱われます)サイズ:通常は1バイト(処理系によって異なる場合があります)ヘッダーファイル:C++言語に組み込まれて