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

MongoDBの$ne演算子を使ってクエリを実行する方法をわかりやすく解説

MongoDBの$ne(not equal)演算子は、指定したフィールドの値が特定の値と等しくないドキュメントを抽出するための比較演算子です。「特定の値を除外した条件でデータを取得したい」といった場面で非常に便利です。この記事では、$ne演算子の基本構文から実際の使用例まで、サンプルコード付きで詳しく解説します。

$ne演算子の基本構文

$ne演算子を使ってMongoDBにクエリを実行する場合の基本的な構文は以下の通りです。

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

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

まず、動作確認用にコレクションを作成し、ドキュメントを挿入します。ここでは、学生の名前と数学の点数を格納する「notEqualToDemo」コレクションを使用します。

> db.notEqualToDemo.insertOne({"StudentName":"Larry","StudentMathMarks":68});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cbd3a6bde8cc557214c0ded")
}
> db.notEqualToDemo.insertOne({"StudentName":"Chris","StudentMathMarks":88});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cbd3a79de8cc557214c0dee")
}
> db.notEqualToDemo.insertOne({"StudentName":"David","StudentMathMarks":45});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cbd3a89de8cc557214c0def")
}
> db.notEqualToDemo.insertOne({"StudentName":"Carol","StudentMathMarks":69});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cbd3a97de8cc557214c0df0")
}

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

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

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

上記のクエリを実行すると、次のような出力が得られます。

{
   "_id" : ObjectId("5cbd3a6bde8cc557214c0ded"),
   "StudentName" : "Larry",
   "StudentMathMarks" : 68
}
{
   "_id" : ObjectId("5cbd3a79de8cc557214c0dee"),
   "StudentName" : "Chris",
   "StudentMathMarks" : 88
}
{
   "_id" : ObjectId("5cbd3a89de8cc557214c0def"),
   "StudentName" : "David",
   "StudentMathMarks" : 45
}
{
   "_id" : ObjectId("5cbd3a97de8cc557214c0df0"),
   "StudentName" : "Carol",
   "StudentMathMarks" : 69
}

$ne演算子を使ったクエリの実行例

それでは、実際に$ne演算子を使ってみましょう。ここでは、「StudentMathMarks(数学の点数)」が88ではないドキュメントを検索します。

> db.notEqualToDemo.find({StudentMathMarks:{$ne:88}}).pretty();

このクエリを実行すると、Chris(88点)のドキュメントが除外され、以下のように数学の点数が88以外のドキュメントのみが出力されます。

{
   "_id" : ObjectId("5cbd3a6bde8cc557214c0ded"),
   "StudentName" : "Larry",
   "StudentMathMarks" : 68
}
{
   "_id" : ObjectId("5cbd3a89de8cc557214c0def"),
   "StudentName" : "David",
   "StudentMathMarks" : 45
}
{
   "_id" : ObjectId("5cbd3a97de8cc557214c0df0"),
   "StudentName" : "Carol",
   "StudentMathMarks" : 69
}

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

$ne演算子を利用する際は、以下の点に注意しましょう。

  • フィールドが存在しないドキュメントも含まれる: $neで検索した場合、対象フィールド自体が存在しないドキュメントも結果に含まれます。これを避けたい場合は、$exists演算子と組み合わせて使用します。
  • パフォーマンスへの影響: $neは否定条件のため、インデックスが効きにくく、大量のデータを扱う場合はクエリのパフォーマンスが低下することがあります。

このように、$ne演算子を使えば「〜以外の値を持つドキュメント」を簡単に取得できます。データの除外検索が必要な場面でぜひ活用してください。

  1. 【MongoDB】limit()メソッドでクエリ結果の件数を制限する方法

    MongoDBで取得するドキュメントの件数を制限したい場合には、limit()メソッドを使用します。この記事では、実際にコレクションを作成しながら、limit()の基本的な使い方を具体例とともに解説します。 1. コレクションの作成とドキュメントの挿入 まず、insertOne()メソッドを使って、サンプル用コレクション「demo58」に4件のドキュメントを挿入してみましょう。 > db.demo58.insertOne({"Name":"David"}); { "acknowledged" : true, &quo

  2. MongoDBでSQLのLIKE検索と同じことを実現する方法

    MongoDBにおけるLIKE検索の基本SQLの「LIKE」句のように部分一致でデータを検索したい場合、MongoDBでは find() メソッドと正規表現(//)を組み合わせることで同様の処理を実現できます。この記事では、実際にコレクションを作成し、正規表現を使ったLIKE検索の具体的な手順を解説します。テスト用コレクションの作成まず、サンプルとなるドキュメントを含むコレクションを作成しましょう。ここでは「FirstName」というフィールドを持つドキュメントをいくつか登録します。> db.demo686.insertOne({FirstName:Robert});{ &nb