mongoDB ドキュメント(レコード)検索にand条件を使用する

mongoDB ドキュメント(レコード)検索にand条件を使用する

mongoDBで、ドキュメント(レコード)検索にand条件を使用する手順を記述してます。「db.コレクション名.find()」に「$and」を指定することで可能です。「or」の場合も同じように「$or」を使用します。

環境

  • OS CentOS Stream release 9
  • MongoDB 6.0.2

手順

ドキュメント(レコード)検索にand条件を使用するには、「db.コレクション名.find()」に
「$and」を指定します。

db.コレクション名.find({$and: [{ 条件 },{ 条件 } ]});

実際に、以下のデータベース「hoge」にある「foo」というコレクション(テーブル)のドキュメント(レコード)を使用して検索を実行してみます。

> use hoge

> db.foo.find()

{ "_id" : ObjectId("61b6dbe43d393774a1cf22cb"), "name" : "itiro", "age" : 10, "gender" : "m" }
{ "_id" : ObjectId("61b6dbe83d393774a1cf22cc"), "name" : "jiro", "age" : 20, "gender" : "m" }
{ "_id" : ObjectId("61b6dbed3d393774a1cf22cd"), "name" : "saburo", "age" : 30, "gender" : "m" }
{ "_id" : ObjectId("61b6dc4c3d393774a1cf22ce"), "name" : "jiro", "age" : 25, "gender" : "f" }
{ "_id" : ObjectId("61b6dc503d393774a1cf22cf"), "name" : "jiro", "age" : 30, "gender" : "x" }

プロパティ「name」が「jiro」のものかつ「age」が「25」以上なものを検索します。

> db.foo.find({$and: [{ name  : 'jiro' },{ age : { $gte : 25  } }]});

{ "_id" : ObjectId("61b6dc4c3d393774a1cf22ce"), "name" : "jiro", "age" : 25, "gender" : "f" }
{ "_id" : ObjectId("61b6dc503d393774a1cf22cf"), "name" : "jiro", "age" : 30, "gender" : "x" }

and条件が指定されていることが確認できます。

or条件

orの場合は、andをorに変更するだけです。

> db.foo.find({$or: [{ name  : 'jiro' },{ age : { $gte : 25  } }]});

{ "_id" : ObjectId("61b6dbe83d393774a1cf22cc"), "name" : "jiro", "age" : 20, "gender" : "m" }
{ "_id" : ObjectId("61b6dbed3d393774a1cf22cd"), "name" : "saburo", "age" : 30, "gender" : "m" }
{ "_id" : ObjectId("61b6dc4c3d393774a1cf22ce"), "name" : "jiro", "age" : 25, "gender" : "f" }
{ "_id" : ObjectId("61b6dc503d393774a1cf22cf"), "name" : "jiro", "age" : 30, "gender" : "x" }