mongoDB likeを使用する

mongoDB likeを使用する

mongoDBで、likeを使用する手順を記述してます。リレーショナルデータベースのように前方一致と後方一致も指定することができます。

環境

  • OS Ubuntu 20.04
  • MongoDB 5.0.5

手順

likeを使用するには、「db.コレクション名.find({ “プロパティ名:/値/”} )」を使用します。
※以下は部分一致となります。前方一致と後方一致は後述してます。

db.コレクション名.find( {"プロパティ名:/値/"} )

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

> use hoge

> db.foo.find()

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

test> db.foo.find({age:{$in:[20,25]}})
[
  {
    _id: ObjectId("6364ae7f06a29c57f191d1b8"),
    name: 'jiro',
    age: 20,
    gender: 'm'
  },
  {
    _id: ObjectId("6364ae7f06a29c57f191d1ba"),
    name: 'jiro',
    age: 25,
    gender: 'f'
  }
]

「name」に「i」が含まれる部分一致で表示してみます。

> db.foo.find({name:/i/})

[
  {
    _id: ObjectId("6364ae7f06a29c57f191d1b7"),
    name: 'itiro',
    age: 10,
    gender: 'm'
  },
  {
    _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'
  }
]

部分一致で実行されていることが、確認できます。

前方一致

前方一致を実行する場合は、以下のようにします。

db.コレクション名.find({ "プロパティ名:/^値/" })

実行してみます。

> db.foo.find({name:/^i/})

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

後方一致

後方一致を実行する場合は、以下のようにします。

db.コレクション名.find({ "プロパティ名:/値$/" })

実行してみます。

> db.foo.find({name:/iro$/})

[
  {
    _id: ObjectId("6364ae7f06a29c57f191d1b7"),
    name: 'itiro',
    age: 10,
    gender: 'm'
  },
  {
    _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'
  }
]