假设我的模型看起来像:
{_id: ..., tags: ["stackoverflow", "github", "bootstrap", ...]}
如何搜索符合 BOTH /stack/
和/git/
的所有商品?
答案 0 :(得分:1)
有mongo正则表达式doc http://docs.mongodb.org/manual/reference/operator/query/regex/
db.collection.find(
{
$and :
[
{ tags: { $regex: /git/ } },
{ tags: { $regex: /boot/ } }
]
})
此解决方案可能对您有所帮助 Searching in MongoDB
答案 1 :(得分:0)
只是认为这个问题/以前的答案可以改进:
解决此问题时首先想到的解决方案是:
db.collection.find({ tags: { $regex: /git/ }, tags: { $regex: /stack/ }}
但是这会导致找到仅匹配'堆栈的标记项目,因为mongo以这种方式构建此查询,导致第一个标准被第二个标准覆盖(因为它们具有相同的密钥' ;标记'。)
因此,正确的解决方案是:
db.collection.find(
{
$and :
[
{ tags: { $regex: /git/ } },
{ tags: { $regex: /stack/ } }
]
})
哪个文档会找到符合正则表达式条件的文档' git'并且'堆叠'虽然语法有点人为。