mongodb实现类似sql中distinct的效果
如果想在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:将集合中的文档分组,可用于统计结果。
命令执行结果类似: