我对Meteor及其Mongo数据库都很陌生,我想知道如何找到“相关文档”。
我有一些帖子,有标签,如下:
[{ title : 'title', tags: [{name : 'tag1'}, {name : 'tag2'}]}]
现在我想查询我的数据库,找到在这些标记集上有交集的帖子,我想按照交集下降的大小来排序结果。
如何将其编码到find()查询中,在该查询中,查询被赋予一组标记以作为输入进行检查?
答案 0 :(得分:1)
你也可以简单地找到:
Collection.find({"tags.name" : "tag1"})
这将为'tag1'
数组中包含tags
的所有匹配文档提供。
答案 1 :(得分:0)
这种结构很容易:
[{
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"]}
});