mongodb实现类似sql中distinct的效果

来源:互联网 发布:apache服务器 ubuntu 编辑:程序博客网 时间:2024/06/07 02:50

如果想在mongo中实现以下sql的效果:

SELECT DISTINCT i.city,i.region from iplocation i where i.country_name = 'China',把iplocation 中的中国的城市去重列出;

对应的mongodb命令是:

db.getCollection('location')
 .aggregate([
     {"$match" : {contryName:"China"}},//类似sql中where i.country_name = 'China'
     {"$group" : {_id : {city:"$city", region:"$region"}}}, //类似sql中DISTINCT i.city,i.region
     {"$project" : {_id:0, city:"$_id.city", region:"$_id.region"}},//把
     {"$limit": 10000000000}
 ])

需要用到mongo的聚合,主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。

$match:用于过滤数据,只输出符合条件的文档;

$projec:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。

$limit:用来限制MongoDB聚合管道返回的文档数。

$group:将集合中的文档分组,可用于统计结果。


命令执行结果类似:



原创粉丝点击