Meteor / Mongodb根据文档标签查找相关记录

时间:2013-07-10 11:39:10

标签: mongodb meteor

我对Meteor及其Mongo数据库都很陌生,我想知道如何找到“相关文档”。

我有一些帖子,有标签,如下:

[{ title : 'title', tags: [{name : 'tag1'}, {name : 'tag2'}]}]

现在我想查询我的数据库,找到在这些标记集上有交集的帖子,我想按照交集下降的大小来排序结果。

如何将其编码到find()查询中,在该查询中,查询被赋予一组标记以作为输入进行检查?

2 个答案:

答案 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"]}
});
相关问题