0

我正在用 Ruby (这里) 编写一个小型 torrent 索引器,并且很想支持 MongoDB 作为数据库的一个选项。tag目前,我在数据库中设置了s 和torrents之间的多对多关系。

如何格式化torrent_id从映射表中获取与给定列表中所有标签匹配的所有 s 的查询?

我在 SQL 中这样做是这样的:

select torrent_id, count(*) num from tagmap where tag_id in (tag1, tag2, tag3, tag4) group by torrent_id having num = 4"

编辑:我现在只处理带有torrent_idand的集合tag_id。这就是它的全部内容。所以我将ids映射到ids,仅此而已。

4

1 回答 1

1

最好创建一个集合来创建包含 tag_id 和 torrent_id 的映射。每当您添加种子时,还要将种子标签添加到 torrenttags 集合中。索引应该在 tag_id 上。

您可以使用以下查询语法来获取匹配多个标签的种子列表。

db.tagmap.find({tag_id:{$in: ['tag1','tag2','tag3','tag4']}});

对于聚合(分组,计数),您需要使用 MapReduce

于 2012-07-30T19:58:51.150 回答