Mongodb计数查询以搜索包含一个字符串或另一个字符串的字符串

时间:2015-02-18 01:02:42

标签: mongodb mongodb-query

您好我试图计算包含任一字符串(单词)的mongodb中的文档。我有大约50个单词(或字符串)。我知道我需要使用"或"在这里查询。

这是我试过的查询:但我不确定这是否正确

db.collection.find({"created_at": /^sep 23.*/i, "$and": [{ "text": /.*abc.*/i },{ "text": /.*efg.*/i }]}).count()

2 个答案:

答案 0 :(得分:2)

您可以使用$in作为与单个字段的OR匹配来执行此操作:

db.collection.find({created_at: /^sep 23/i, text: {$in: [/abc/i, /efg/i] }}).count()

您可以稍微简化正则表达式以删除.*部分,因为这些部分已经隐含了。

答案 1 :(得分:1)

如果您没有指定要搜索文档中的特定字段,我建议您在此处描述文本搜索选项:http://docs.mongodb.org/manual/reference/operator/query/text/

参考上述文档,您可以使用:

db.collection.find( { $text: { $search: "word1 word2 word3" } } )

空格分隔的字符串被视为在它们之间具有逻辑OR运算符...