java - 如何通过 java 驱动程序通过聚合函数(如 group、count 和 distinct)访问 mongodb 集合?

标签 java mongodb mongodb-query

这是我的 mongdb 集合:

 { "_id" : ObjectId("50033fb1ecc250aa369a678a"), "ID" : 1, "FirstName" : "ijaz",
"LastName" : "alam", "Age" : 21, "Address" : "peshawer" }
{ "_id" : ObjectId("50033fc2ecc250aa369a678b"), "ID" : 2, "FirstName" : "ashfaq"
,"LastName" : "khan", "Age" : 1921, "Address" : "sadkabad" }
{ "_id" : ObjectId("50033fdeecc250aa369a678c"), "ID" : 3, "FirstName" : "danyal"
,"LastName" : "alam", "Age" : 18, "Address" : "lahore" }
{ "_id" : ObjectId("50033ff7ecc250aa369a678d"), "ID" : 43, "FirstName" : "shahzad"
, "LastName" : "sad", "Age" : 22, "Address" : "nazirabad" }

现在我想通过 java 驱动程序使用聚合函数,如 group、distinct 和 count on 以上集合,或者如何通过 java 驱动程序在查询中实现聚合函数。

最佳答案

Distinctcount和特殊的 Mongo 命令,你不需要做任何特殊的聚合来使用它们。只需在您的 DBCollection 实例上使用适当的参数调用它们。

myCollection.distinct("Age") // gives you all the ages in the collection
myCollection.count(new BasicDBObject("Age", 22)) // gives you a count of 22 year olds

对于其他聚合操作,您需要 Java GroupCommand:

new GroupCommand(myCollection,
             new BasicDBObject("Age ", true),
             null,
             new BasicDBObject("count", 0),
            "function(key,val){ val.count++;}", 
             null); //gives counts of each age in the collection

如果您在 Mongo 的 2.1.x 开发版本或更高版本上运行,请查看聚合框架。它比现有的组命令更好(但在回答这个问题时尚未准备好生产)。

关于java - 如何通过 java 驱动程序通过聚合函数(如 group、count 和 distinct)访问 mongodb 集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11496165/

相关文章:

java - Tomcat JMX CPU 使用百分比

java - spring mvc属性文件中linux home的路径

mongodb - 基于数组 Mongoose/Mongodb 中嵌套子文档的 desc 值对查询结果进行排序

MongoDB,选择嵌套数组字段

mongodb - $text 搜索可以执行部分​​匹配吗

java - 将 JFrame 从起始方法获取到另一个方法

java - 使用 JUnit 和 Mockito 对 DAO 类进行单元测试

javascript - MongoDB&JavaScript 堆内存不足

Spring Data MongoDB 与 Java 8 LocalDate MappingException

mongodb - 如何对mongo中的后续元素进行分组?