mongoDB whereを使用する

mongoDBで、whereを使用する手順を記述してます。「find」で「$where」を使用します。mongoDBでも一般的なリレーショナルデータベースのように「where」を使用してデータを抽出することできます。
環境
- OS CentOS Stream release 9
- MongoDB 6.0.2
手順
実行計画を取得するには、「$where」を使用します。
db.コレクション名.find( { $where: "条件" } )
実際に、以下のデータベース「hoge」にある「foo」というコレクション(テーブル)のドキュメント(レコード)を使用して動作を確認してみます。
> use hoge
> db.foo.find()
[
{
_id: ObjectId("6368bc09cbd6720d0fb92c2d"),
name: 'itiro',
age: 10,
gender: 'm'
},
{
_id: ObjectId("6368bc09cbd6720d0fb92c2e"),
name: 'jiro',
age: 20,
gender: 'm'
},
{
_id: ObjectId("6368bc09cbd6720d0fb92c2f"),
name: 'saburo',
age: 30,
gender: 'm'
},
{
_id: ObjectId("6368bc09cbd6720d0fb92c30"),
name: 'jiro',
age: 25,
gender: 'f'
},
{
_id: ObjectId("6368bc09cbd6720d0fb92c31"),
name: 'jiro',
age: 30,
gender: 'x'
}
]
「10」より大きいのデータだけ取得してみます。
> db.foo.find({$where: "this.age > 10"})
[
{
_id: ObjectId("6368bc09cbd6720d0fb92c2e"),
name: 'jiro',
age: 20,
gender: 'm'
},
{
_id: ObjectId("6368bc09cbd6720d0fb92c2f"),
name: 'saburo',
age: 30,
gender: 'm'
},
{
_id: ObjectId("6368bc09cbd6720d0fb92c30"),
name: 'jiro',
age: 25,
gender: 'f'
},
{
_id: ObjectId("6368bc09cbd6720d0fb92c31"),
name: 'jiro',
age: 30,
gender: 'x'
}
]
取得されていることが、確認できます。
and条件も使用できます。
> db.foo.find({$where: "this.age > 10 && this.age <= 25"})
[
{
_id: ObjectId("6368bc09cbd6720d0fb92c2e"),
name: 'jiro',
age: 20,
gender: 'm'
},
{
_id: ObjectId("6368bc09cbd6720d0fb92c30"),
name: 'jiro',
age: 25,
gender: 'f'
}
]
or条件は、以下となります。
> db.foo.find({$where: "this.age >= 30 || this.age == 25"})
[
{
_id: ObjectId("6368bc09cbd6720d0fb92c2f"),
name: 'saburo',
age: 30,
gender: 'm'
},
{
_id: ObjectId("6368bc09cbd6720d0fb92c30"),
name: 'jiro',
age: 25,
gender: 'f'
},
{
_id: ObjectId("6368bc09cbd6720d0fb92c31"),
name: 'jiro',
age: 30,
gender: 'x'
}
]
-
前の記事
Redis デクリメントを実行する 2022.09.21
-
次の記事
SQL Server アスキーコードから文字列に変換する 2022.09.21
コメントを書く