【发布时间】:2013-03-16 03:57:44
【问题描述】:
在question 中,Jeff the Bear 解释了如何使用数组搜索文档
contains 'tag1'
contains ['tag1','tag2'],
contains any of ['tag3', 'tag4']
但是,如果我想使用属于另一个数组的数组来搜索文档,我应该怎么做?
post1.tags = ['tag1']
post2.tags = ['tag1','tag3']
post3.tags = ['tag2','tag4']
post4.tags = ['tag1','tag2','tag3','tag4']
我想获取 post1 和 post3,因为它们有标签
contained in ['tag1', 'tag2', 'tag4']
我不想获取post2和post4,因为['tag1', 'tag2', 'tag4']中不存在tag3
也就是说,选择标签数组中的所有元素都可以在另一个条件数组中找到的帖子
【问题讨论】:
-
“另一个数组的一部分”是什么意思,标签应该包含您要查找的所有内容还是仅包含您要查找的部分内容?
-
{post1.tags = ['tag1']} 或 {post2.tags = ['tag1', 'tag3']} 是数组 ['tag1','tag3'] 的一部分.
-
如果你能保证你能做的订单:
db.col.find({tags:[tag1,tag2]})但它需要一个好的订单 -
好的,我看到你的编辑了,好像:
db.col.find({tags: {$in:[tag1,tag2]}})应该可以工作 -
db.col.find({tags: {$in:[tag1,tag2]}})将搜索标签包含“tag1”或“tag2”的任何帖子。我可能会收到一些带有标签["tag1","tag3"]或["tag2","tag4"]的帖子,但它们不是我要查找的帖子。在这种情况下,我只想要带有标签 ["tag1"]、["tag2"] 或 ["tag1","tag2"] 的帖子
标签: mongodb