mongoDB ドキュメント(レコード)を検索する

mongoDB ドキュメント(レコード)を検索する

mongoDBで、ドキュメント(レコード)を検索する手順を記述してます。「find()」を使用します。mongoDB6の場合は、実行すると自動的に整形されて出力されるようになってます。

環境

  • OS CentOS Stream release 9
  • MongoDB 6.0.2

手順

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

db.コレクション名.find()

実際に、「foo」というコレクションのドキュメント(レコード)を検索してみます。

> db.foo.find()

[
  {
    _id: ObjectId("6364ae7f06a29c57f191d1b7"),
    name: 'itiro',
    age: 10,
    gender: 'm'
  },
  {
    _id: ObjectId("6364ae7f06a29c57f191d1b8"),
    name: 'jiro',
    age: 20,
    gender: 'm'
  },
  {
    _id: ObjectId("6364ae7f06a29c57f191d1b9"),
    name: 'saburo',
    age: 30,
    gender: 'm'
  },
  {
    _id: ObjectId("6364ae7f06a29c57f191d1ba"),
    name: 'jiro',
    age: 25,
    gender: 'f'
  },
  {
    _id: ObjectId("6364ae7f06a29c57f191d1bb"),
    name: 'jiro',
    age: 30,
    gender: 'x'
  }
]

全てのドキュメントが検索されていることが確認できます。

条件を指定

条件を指定して検索してみます。

名前が「jiro」のものを検索するには、以下のようにします。

> db.foo.find( {name:'jiro'} )

[
  {
    _id: ObjectId("6364ae7f06a29c57f191d1b8"),
    name: 'jiro',
    age: 20,
    gender: 'm'
  },
  {
    _id: ObjectId("6364ae7f06a29c57f191d1ba"),
    name: 'jiro',
    age: 25,
    gender: 'f'
  },
  {
    _id: ObjectId("6364ae7f06a29c57f191d1bb"),
    name: 'jiro',
    age: 30,
    gender: 'x'
  }
]

ageが20未満のものだけ抽出します。

> db.foo.find( { age:{$lt:20} } )

[
  {
    _id: ObjectId("6364ae7f06a29c57f191d1b7"),
    name: 'itiro',
    age: 10,
    gender: 'm'
  }

指定できる条件は以下のようになります。

演算子Mongo演算子内容
<$lt右辺より小さい{ age:{$lt:20} }
<=$lte右辺以下{ age:{$lte:20} }
>$gt右辺より大きい{ age:{$gt:20} }
>=$gte右辺以上{ age:{$gte:20} }
!=$ne等しくない{ name:{$ne:’jiro’} }
ANDなしand条件{name:’jiro’, age: 20}
OR$oror条件db.コレクション名.find({$or:[{age:20},{age:30]})

「MongoDB Compass」から検索

「MongoDB Compass」 から検索する場合は、
対象の「コレクション」を選択して「FILTER」に同様に条件を入力して「FIND」をクリックします。