我对 Meteor 及其 Mongo DB 很陌生,我想知道如何找到“相关文档”。
我有一组带有标签的帖子,如下所示:
[{ title : 'title', tags: [{name : 'tag1'}, {name : 'tag2'}]}]
现在我想查询我的数据库,以查找在这些标签集上有交集的帖子,我想按交集的大小降序排列结果。
应该如何将其编码到 find() 查询中,其中为查询提供了一个标签数组以作为输入进行检查?
您也可以简单地找到:
Collection.find({"tags.name" : "tag1"})
这将给出数组'tag1'
中所有匹配的文档。tags
使用这种结构很容易:
[{
title: 'title',
tags: ['tag1', 'tag2'],
}]
然后你使用:
Documents.find({
tags: {$all: [ "alpha", "beta", "gamma" ]}
});
见这里:http ://docs.mongodb.org/manual/reference/operator/all/#op._S_all
现在,我不确定它可能会也可能不会像您那样处理复杂的对象。尝试这个:
Documents.find({
tags: {$all: [{name: "alpha"}, {name: "beta"}]}
});
如果您需要指定的结构并且上述查询不起作用,则剩下的就是$where
查询。它非常灵活,但不推荐,因为它比其他的慢得多。看这里:
http://docs.mongodb.org/manual/reference/operator/where/#op._S_where
编辑:这个应该做的工作:
Documents.find({
'tags.name': {$all: ["alpha", "beta"]}
});