Case insensitive search with $ in

Onk*_*nwa 19 mongodb nosql

他们是否可以使用$ in在mongodb中搜索集合中的列,其中包括用于搜索的元素数组以及列中这些元素的caseInsensitive匹配?

Zau*_*bov 10

您可以将$ elemMatch与正则表达式搜索一起使用,例如,让我们在以下集合中搜索" 蓝色 "颜色:

db.items.save({ 
  name : 'a toy', 
  colors : ['red', 'BLUE'] 
})
Run Code Online (Sandbox Code Playgroud)

  • 当我们需要检查一个值数组时,这没用 (3认同)
  • 一个注意事项:这个正则表达式不会使用索引.因此,这种解决方案不适合"大数据".另一种解决方案是支持相同的小型阵列. (2认同)

Roc*_*uza 10

使用$ in且匹配不区分大小写:

数据示例:

{ 
    name : "...Event A",
    fieldX : "aAa" 
},
{ 
  name : "...Event B",
  fieldX : "Bab" 
},
{ 
  name : "...Event C",
  fieldX : "ccC" 
},
{ 
  name : "...Event D",
  fieldX : "dDd" 
}
Run Code Online (Sandbox Code Playgroud)

我们希望文件"fieldX"包含在数组的任何值(optValues)中:

var optValues = ['aaa', 'bbb', 'ccc', 'ddd'];

var optRegexp = [];
optValues.forEach(function(opt){
        optRegexp.push(  new RegExp(opt, "i") );
});

db.collection.find( { fieldX: { $in: optRegexp } } );
Run Code Online (Sandbox Code Playgroud)

这适用于所有人.

我希望这有帮助!

ps:这是我在Web应用程序中按标签搜索的解决方案.