假设我们有一个用户给定的数组:
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
这个词。
我尝试$in
和search
但没有成功。我该怎么用?
答案 0 :(得分:0)
感染方式是使用正则表达式:
db.foo.find({"paragraphs.header": {$in: [/dolor/, /sed/]}})
因为没有一个锚定在字符串的开头,这意味着你不能使用索引,你必须执行完整扫描才能找到匹配的文档。
如果你想要有效的方法,你应该看看TextSearch。
--setParameter textSearchEnabled=true
db.foo.ensureIndex({"paragraphs.header": "text"})
db.foo.runCommand("text", {search: "dolor sed"})
您可以在创建文本索引或运行text
命令时指定语言但不幸的是Latin is not supported;)