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

MongoDBでドキュメント内のハッシュ(ネストされたフィールド)に$gt演算子を使う方法

$gt演算子とは

$gtはMongoDBの比較演算子の一つで、「greater than(〜より大きい)」を意味します。指定した値よりも大きい値を持つフィールドを含むドキュメントのみを選択できます。さらに、ドット記法を利用することで、ハッシュ(埋め込みドキュメント)の内部にあるフィールドに対しても$gtによる比較が可能です。

テスト用コレクションの作成

まず、insertOne()メソッドを使ってドキュメントを挿入し、コレクションを作成します。各ドキュメントにはプレイヤー名と、スコア・レベルをまとめた「PlayerDetails」というハッシュ型のフィールドを持たせています。

> db.performQueryDemo.insertOne({'PlayerDetails':{'PlayerScore':1000,'PlayerLevel':2},'PlayerName':'Chris'});
{
        'acknowledged' : true,
        'insertedId' : ObjectId('5cd7eba41a844af18acdffa9')
}
> db.performQueryDemo.insertOne({'PlayerDetails':{'PlayerScore':0,'PlayerLevel':1},'PlayerName':'Robert'});
{
        'acknowledged' : true,
        'insertedId' : ObjectId('5cd7ebbb1a844af18acdffaa')
}
> db.performQueryDemo.insertOne({'PlayerDetails':{'PlayerScore':-10,'PlayerLevel':0},'PlayerName':'Larry'});
{
        'acknowledged' : true,
        'insertedId' : ObjectId('5cd7ebd41a844af18acdffab')
}
> db.performQueryDemo.insertOne({'PlayerDetails':{'PlayerScore':1,'PlayerLevel':1},'PlayerName':'David'});
{
        'acknowledged' : true,
        'insertedId' : ObjectId('5cd7ebe31a844af18acdffac')
}

登録済みドキュメントの確認

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

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

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

{ '_id' : ObjectId('5cd7eba41a844af18acdffa9'),
        'PlayerDetails' : {
                'PlayerScore' : 1000,
                'PlayerLevel' : 2
        },
        'PlayerName' : 'Chris'
}
{ '_id' : ObjectId('5cd7ebbb1a844af18acdffaa'),
        'PlayerDetails' : {
                'PlayerScore' : 0,
                'PlayerLevel' : 1
        },
        'PlayerName' : 'Robert'
}
{ '_id' : ObjectId('5cd7ebd41a844af18acdffab'),
        'PlayerDetails' : {
                'PlayerScore' : -10,
                'PlayerLevel' : 0
        },
        'PlayerName' : 'Larry'
}
{ '_id' : ObjectId('5cd7ebe31a844af18acdffac'),
        'PlayerDetails' : {
                'PlayerScore' : 1,
                'PlayerLevel' : 1
        },
        'PlayerName' : 'David'
}

ハッシュ内のフィールドに$gtを適用する

MongoDBドキュメント内のハッシュに対して$gtを実行するには、ドット記法でネストされたフィールドへのパスを指定します。以下の例では、プレイヤースコア(PlayerScore)が0より大きいレコードを取得しています。

> db.performQueryDemo.find({'PlayerDetails.PlayerScore':{$gt:0}});

このクエリを実行すると、次の出力が得られます。

{ '_id' : ObjectId('5cd7eba41a844af18acdffa9'), 'PlayerDetails' : { 'PlayerScore' : 1000, 'PlayerLevel' : 2 }, 'PlayerName' : 'Chris' }

{ '_id' : ObjectId('5cd7ebe31a844af18acdffac'), 'PlayerDetails' : { 'PlayerScore' : 1, 'PlayerLevel' : 1 }, 'PlayerName' : 'David' }

ポイントまとめ

  • $gtは「より大きい」を判定する比較演算子です。$gte(以上)、$lt(未満)、$lte(以下)と合わせて覚えておくと便利です。
  • ネストされたハッシュ内のフィールドを検索する場合は、「親フィールド.子フィールド」の形式でパスを指定します。
  • 実行結果を見ると、スコアが0以下のRobert(0)とLarry(-10)は除外され、Chris(1000)とDavid(1)のみが取得できていることがわかります。
  1. MongoDBで_idを指定してドキュメントを削除する方法を徹底解説

    MongoDBで_idを指定してドキュメントを削除する方法 MongoDBでは、remove()メソッドを使用することで、_idを指定して特定のドキュメントを削除できます。本記事では、実際のコード例を交えながら、削除の手順をわかりやすく解説します。 基本構文 _idでドキュメントを削除する際の基本的な構文は以下のとおりです。 db.yourCollectionName.remove({_id: yourObjectId}); サンプルコレクションの作成 まず、動作を確認するために、ドキュメントを含むコレクションを作成します。 > db.demo518.insertOne({ClientN

  2. MongoDBでドキュメントのフィールドにアクセスする方法|find()とプロジェクションの使い方

    MongoDBでドキュメント内のフィールドにアクセスするには、find()メソッドを使用します。この記事では、実際にコレクションを作成し、ドキュメントを挿入したうえで、特定のフィールドだけを取得する方法をサンプルコード付きで解説します。 コレクションの作成とドキュメントの挿入 まず、サンプル用のコレクション「demo565」を作成し、3件のドキュメントを挿入します。insertOne()メソッドを使って、1件ずつ登録していきましょう。 > db.demo565.insertOne( ... { ... id:101, ... Name:David, ... Countr