1

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

我有一组带有标签的帖子,如下所示:

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

现在我想查询我的数据库,以查找在这些标签集上有交集的帖子,我想按交集的大小降序排列结果。

应该如何将其编码到 find() 查询中,其中为查询提供了一个标签数组以作为输入进行检查?

4

2 回答 2

1

您也可以简单地找到:

Collection.find({"tags.name" : "tag1"})

这将给出数组'tag1'中所有匹配的文档。tags

于 2013-07-10T12:17:06.070 回答
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"]}
});
于 2013-07-10T12:06:21.283 回答