0

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

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 or sed

我试过了$insearch但没有成功。我应该使用什么?

4

1 回答 1

0

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

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

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

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

  • 开始 mongod--setParameter textSearchEnabled=true
  • 创建文本索引db.foo.ensureIndex({"paragraphs.header": "text"})
  • 搜索db.foo.runCommand("text", {search: "dolor sed"})

您可以在创建文本索引或运行text命令时指定语言,但不幸的是不支持拉丁语;)

于 2013-11-08T12:18:01.493 回答