21

$in検索用の要素の配列と列内のそれらの要素の一致を含むmongodbのコレクション内の列を検索する方法はcaseInsensitive?

4

6 に答える 6

12

$elemMatchを正規表現検索で使用できます。たとえば、次のコレクションで「 blue 」色を検索してみましょう:

db.items.save({ 
  name : 'a toy', 
  colors : ['red', 'BLUE'] 
})
> ok
db.items.find({
  'colors': {
    $elemMatch: { 
      $regex: 'blue', 
      $options: 'i' 
    }
  }
})
>[ 
  {   
    "name": "someitem",
    "_id": { "$oid": "4fbb7809cc93742e0d073aef"},   
    "colors": ["red", "BLUE"]
   }
]
于 2012-05-22T11:19:24.483 に答える
3

これは私にとって完璧に機能します。

コードから、次のようなカスタム クエリを作成できます。

{
  "first_name":{
    "$in":[
      {"$regex":"^serina$","$options":"i"}, 
      {"$regex":"^andreW$","$options":"i"}
    ]
  }
}

これは、クエリの後に mongo で次のように変換されます。

db.mycollection.find({"first_name":{"$in":[/^serina$/i, /^andreW$/i]}})

「$nin」も同様。

于 2017-01-03T09:29:21.060 に答える
0

これは、配列のデータから複数の条件(正規表現)を使用した大文字と小文字$inを区別しない検索(クエリ)です。使用しましたが、大文字と小文字を区別しない検索はサポートされていません。

サンプルデータ

{ 
  name : "...Event A",
  tags : ["tag1", "tag2", "tag3", "tag4] 
},
{ 
  name : "...Event B",
  tags : ["tag3", "tag2"]
},
{ 
  name : "...Event C",
  tags : ["tag1", "tag4"]
},
{ 
  name : "...Event D",
  tags : ["tag2", "tag4"]
}

私のクエリ

db.event.find(
  { $or: //use $and or $or depends on your needs
    [ 
      { tags : { 
         $elemMatch : { $regex : '^tag1$', $options : 'i' }
        } 
      },
      { tags : { 
         $elemMatch : { $regex : '^tag3$', $options : 'i' }
        } 
      }
    ]
})
于 2015-03-31T12:01:59.663 に答える