1

这是我的 mondb 集合:

 { "_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等聚合函数,或者如何通过java驱动程序在查询中实现聚合函数。

4

1 回答 1

3

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 开发版本上运行,请查看聚合框架。它比现有的 group 命令更好(但在此答案时尚未准备好生产)。

于 2012-07-15T23:53:47.553 回答