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)のみが取得できていることがわかります。
-
MongoDBで_idを指定してドキュメントを削除する方法を徹底解説
MongoDBで_idを指定してドキュメントを削除する方法 MongoDBでは、remove()メソッドを使用することで、_idを指定して特定のドキュメントを削除できます。本記事では、実際のコード例を交えながら、削除の手順をわかりやすく解説します。 基本構文 _idでドキュメントを削除する際の基本的な構文は以下のとおりです。 db.yourCollectionName.remove({_id: yourObjectId}); サンプルコレクションの作成 まず、動作を確認するために、ドキュメントを含むコレクションを作成します。 > db.demo518.insertOne({ClientN
-
MongoDBでドキュメントのフィールドにアクセスする方法|find()とプロジェクションの使い方
MongoDBでドキュメント内のフィールドにアクセスするには、find()メソッドを使用します。この記事では、実際にコレクションを作成し、ドキュメントを挿入したうえで、特定のフィールドだけを取得する方法をサンプルコード付きで解説します。 コレクションの作成とドキュメントの挿入 まず、サンプル用のコレクション「demo565」を作成し、3件のドキュメントを挿入します。insertOne()メソッドを使って、1件ずつ登録していきましょう。 > db.demo565.insertOne( ... { ... id:101, ... Name:David, ... Countr