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

MongoDBでブールフィールドが「trueではない」ドキュメントをクエリする方法($ne演算子)

$ne演算子による基本的なクエリ

MongoDBでブール型フィールドが「trueではない」ドキュメントを取得したい場合は、$ne(not equal:等しくない)演算子を使用します。基本構文は以下の通りです。

db.yourCollectionName.find({yourFieldName: {$ne: true}}).pretty();

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

実際の動作を確認するため、従業員情報を格納するコレクションを作成し、ドキュメントを挿入していきます。

> db.queryForBooleanFieldsDemo.insertOne({"EmployeeName":"Larry","EmployeeAge":24,"isOldEmployee":true});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c8b7f7680f10143d8431e13")
}
> db.queryForBooleanFieldsDemo.insertOne({"EmployeeName":"Mike","EmployeeAge":20,"isOldEmployee":false});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c8b7f8680f10143d8431e14")
}
> db.queryForBooleanFieldsDemo.insertOne({"EmployeeName":"Sam","EmployeeAge":23,"isOldEmployee":false});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c8b7f9380f10143d8431e15")
}
> db.queryForBooleanFieldsDemo.insertOne({"EmployeeName":"David","EmployeeAge":25,"isOldEmployee":true});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c8b7fa280f10143d8431e16")
}
> db.queryForBooleanFieldsDemo.insertOne({"EmployeeName":"Carol","EmployeeAge":27,"isOldEmployee":true});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c8b7fae80f10143d8431e17")
}

登録済みドキュメントの全件表示

find()メソッドを使えば、コレクション内のすべてのドキュメントを一覧表示できます。

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

実行結果は以下の通りです。

{
    "_id" : ObjectId("5c8b7f7680f10143d8431e13"),
    "EmployeeName" : "Larry",
    "EmployeeAge" : 24,
    "isOldEmployee" : true
}
{
    "_id" : ObjectId("5c8b7f8680f10143d8431e14"),
    "EmployeeName" : "Mike",
    "EmployeeAge" : 20,
    "isOldEmployee" : false
}
{
    "_id" : ObjectId("5c8b7f9380f10143d8431e15"),
    "EmployeeName" : "Sam",
    "EmployeeAge" : 23,
    "isOldEmployee" : false
}
{
    "_id" : ObjectId("5c8b7fa280f10143d8431e16"),
    "EmployeeName" : "David",
    "EmployeeAge" : 25,
    "isOldEmployee" : true
}
{
    "_id" : ObjectId("5c8b7fae80f10143d8431e17"),
    "EmployeeName" : "Carol",
    "EmployeeAge" : 27,
    "isOldEmployee" : true
}

「trueではない」条件でドキュメントを抽出する

それでは、isOldEmployeeフィールドがtrueではないドキュメントのみを取得してみましょう。

> db.queryForBooleanFieldsDemo.find({isOldEmployee: {$ne: true}}).pretty();

実行結果:

{
    "_id" : ObjectId("5c8b7f8680f10143d8431e14"),
    "EmployeeName" : "Mike",
    "EmployeeAge" : 20,
    "isOldEmployee" : false
}
{
    "_id" : ObjectId("5c8b7f9380f10143d8431e15"),
    "EmployeeName" : "Sam",
    "EmployeeAge" : 23,
    "isOldEmployee" : false
}

このように、$ne演算子を使うことで、isOldEmployeeがfalseになっているMikeとSamの2件だけが抽出されました。

補足:$ne演算子使用時の注意点

$ne: trueは「falseが設定されているドキュメント」だけでなく、該当フィールド自体が存在しないドキュメントもマッチする点に注意が必要です。もし「明示的にfalseが設定されたドキュメントのみ」を取得したい場合は、{isOldEmployee: false}のように値を直接指定する方が意図に合致します。データの構造や要件に応じて、両者を適切に使い分けましょう。

  1. MongoDBでフィールド値に含まれる「@email」のような文字列を検索する方法

    MongoDBのfind()メソッドを使えば、正規表現(Regex)を活用して、フィールド値の中から特定の文字列を柔軟に検索できます。本記事では、「@email」という文字列を含むドキュメントを検索する方法を、実際のコード例とともに解説します。1. 検索用コレクションの作成まずは、メールアドレスを格納したドキュメントを持つコレクションを作成しましょう。> db.demo727.insertOne({UserId:John@email.com}); { acknowledged : true, insertedId : ObjectId(5eab375f4341781127

  2. MongoDBでnullではないことをチェックする方法|$ne演算子の使い方

    MongoDBでフィールドがnullではないことを確認したい場合、$ne(not equal)演算子を使用します。この記事では、実際にコレクションを作成しながら、null以外のドキュメントを抽出する方法を解説します。1. サンプルコレクションの作成まず、テスト用のコレクションにドキュメントを挿入してみましょう。> db.demo764.insertOne({"LoginUserName":"Chris","LoginPassword":"Chris_12"}); {    &qu