您好我试图计算包含任一字符串(单词)的mongodb中的文档。我有大约50个单词(或字符串)。我知道我需要使用"或"在这里查询。
这是我试过的查询:但我不确定这是否正确
db.collection.find({"created_at": /^sep 23.*/i, "$and": [{ "text": /.*abc.*/i },{ "text": /.*efg.*/i }]}).count()
答案 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运算符...