需求:对表数据进行分组后,根据某个字段去重,然后在count
命令行有 db.collection.distinct("someField")
问:用morphia应该怎么写?或者通过原生的mongodb驱动应该怎么做?
如果用聚合的话,怎么才能当查询的结果为null时统计的数量为0,比如sql中的 isNull(count(1), 0)
需求:对表数据进行分组后,根据某个字段去重,然后在count
命令行有 db.collection.distinct("someField")
问:用morphia应该怎么写?或者通过原生的mongodb驱动应该怎么做?
如果用聚合的话,怎么才能当查询的结果为null时统计的数量为0,比如sql中的 isNull(count(1), 0)
调用com.mongodb.DBCollection#distinct
方法,对应问题中的命令行 db.collection.distinct("someField")
。
这样会把所有的数据都返回,所以如果只是为了得到count,没必要用distinct。
可以直接用aggregate。
db.collection.aggregate(
[{
$group:{
_id:"$someField",
count:{$sum:1}
}
}]
)
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
这是我实际用到的代码,简单的说就是用了两次group,达到分组都对某个字段去重的目的
参考:http://www.cnblogs.com/lori/p/4597341.html