假设我们有
post1.tags = [ '1', '2', '3' ];
post2.tags = [ '2', '4', '5' ];
post3.tags = [ '1', '3', '4' ];
post4.tags = [ '1', '3', '4', '5', '6' ];
我试图找到包含2个或更多给定标记的帖子[“1”,“3”,“5”]。
结果应该是post1、post3和post4。如何编写MongoDB查询来实现这一点?
最佳答案
听起来可能有更好的方法来实现你想要做的事情,但是如果没有更多的信息,很难提出高层次的建议。
下面是一个查询,它将获取您要查找的内容:
{
$or:
[
{
tags:
{
$all: ['1', '3']
}
},
{
tags:
{
$all: ['3', '5']
}
},
{
tags:
{
$all: ['1', '5']
}
}
]
}
您会注意到,它涉及列出您正在搜索的标记对的每个组合,因此它不能很好地扩展到更大的查询。
编辑:使用
$all
而不是$and
简化查询。关于mongodb - MongoDb数组交集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17407766/