在字符串中找到给定数组中的一个单词

时间:2013-11-08 12:13:02

标签: mongodb

假设我们有一个用户给定的数组:

q = ['dolor', 'sed']

我的数据库中的项目是:

{//data,
 'paragraphs' : [{ 'header' : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam venenatis lectus risus, a interdum lectus rhoncus sed. Vestibulum sit amet massa eu metus iaculis laoreet et non est. ',
                 //mode data
                 },
                 { .. }]
}

我想查找'paragraphs.header'是否包含dolor sed这个词。

我尝试$insearch但没有成功。我该怎么用?

1 个答案:

答案 0 :(得分:0)

感染方式是使用正则表达式:

db.foo.find({"paragraphs.header": {$in: [/dolor/, /sed/]}})

因为没有一个锚定在字符串的开头,这意味着你不能使用索引,你必须执行完整扫描才能找到匹配的文档。

如果你想要有效的方法,你应该看看TextSearch

  • 使用--setParameter textSearchEnabled=true
  • 启动mongod
  • 创建文字索引db.foo.ensureIndex({"paragraphs.header": "text"})
  • 搜索db.foo.runCommand("text", {search: "dolor sed"})

您可以在创建文本索引或运行text命令时指定语言但不幸的是Latin is not supported;)