首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取mongodb中所有唯一标签的列表

获取mongodb中所有唯一标签的列表
EN

Stack Overflow用户
提问于 2011-02-12 13:41:31
回答 2查看 9.4K关注 0票数 20

我从mongodb开始,有一个文档集合,如下所示

{
    "type": 1,
    "tags": ["tag1", "tag2", "tag3"]
}
{
    "type": 2,
    "tags": ["tag2", "tag3"]
}
{
    "type": 3,
    "tags": ["tag1", "tag3"]
}
{
    "type": 1,
    "tags": ["tag1", "tag4"]
}

这样,我想要一组特定类型的所有标签。例如,对于类型1,我想要一组tag1, tag2, tag3, tag4 (任意顺序)。

我所能想到的就是获取标签并将它们添加到Python语言的set中,但我想知道是否有一种方法可以使用mongodb的mapreduce或其他工具来实现这一点。请给我建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-12 16:05:15

如果你只想要一个( distinct )标签列表,那么使用distinct将是最好的选择。Map/Reduce将会更慢,并且不能为javascript部分使用索引。

http://docs.mongodb.org/manual/reference/method/db.collection.distinct/

db.coll.distinct("tags", {type:1})将为type=1返回一组标记。

票数 42
EN

Stack Overflow用户

发布于 2011-02-12 14:20:29

你说得对,Map/Reduce也许能满足你想要完成的任务,但Set可能更快,代码也更少。

> m =     function() {
...         for (var tag in this.tags) {
...             emit(this.tags[tag], 1);
...         }
...     }

> r =     function(key, values) {
...         return 1;
...     }

> db.tags.mapReduce(m, r).find()
{ "_id" : "tag1", "value" : 1 }
{ "_id" : "tag2", "value" : 1 }
{ "_id" : "tag3", "value" : 1 }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4976567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档