首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java中的Mongo聚合:多个字段的组

java中的Mongo聚合:多个字段的组
EN

Stack Overflow用户
提问于 2016-07-05 19:58:55
回答 0查看 10.5K关注 0票数 5

我正在尝试使用mongo- Java -driver在java中执行聚合操作。我还执行了一些其他的find操作,但我无法在Java中正确地执行以下聚合:

代码语言:javascript
复制
db.I1.aggregate([
    { "$match": { "ci": 862222} },
    { "$match": { "gi": { "$ne": null } }},
    { "$group": {
        "_id": {
            "ci": "$ci",
            "gi": "$gi",
            "gn": "$gn",
            "si": "$si"
        }
    }},
    { "$group": {
        "_id": {
            "ci": "$_id.ci",
            "gi": "$_id.gi",
            "gn": "$_id.gn"
        },
        "sn": { "$sum": 1 }
    }},
    { "$sort" : { "_id.gi" : 1}}
])

我已经尝试了几种在Java语言中执行聚合的方式和方法,但是我无法在coll.aggregate(asList())方法中正确地包含组字段"ci", "gi", "gn","si"。到目前为止,我得到的信息如下:

代码语言:javascript
复制
MongoCollection<Document> coll = mongo.getCollection("I1");

Document matchCourse = new Document("$match",
    new Document("ci", Integer.parseInt(courseid)));

Document matchGroupNotNull = new Document("$match",
    new Document("gi", new Document("$ne", null)));

List<Object> list1 = new BasicDBList();
    list1.add(new BasicDBObject("ci", "$ci"));
    list1.add(new BasicDBObject("gi", "$gi"));
    list1.add(new BasicDBObject("gn", "$gn"));
    list1.add(new BasicDBObject("si", "$si"));

Document group1 = new Document(
    "_id", list1).append("count", new Document("$sum", 1));

List<Object> list2 = new BasicDBList();
list2.add(new BasicDBObject("ci", "$_id.ci"));
list2.add(new BasicDBObject("gi", "$_id.gi"));
list2.add(new BasicDBObject("gn", "$_id.gn"));

Document group2 = new Document(
    "_id", list2).append("sn", new Document("$sum", 1));

Document sort = new Document("$sort", 
    new Document("_id.gi", 1));

AggregateIterable<Document> iterable = coll.aggregate(asList(matchCourse,
    matchGroupNotNull, group1, group2, sort));

我知道这是不正确的,但我把它加进来是为了让你知道我在做什么。我用很多不同的方式搜索过这个问题,并阅读了几页,但我没有找到任何解决方案。MongoDB-Java(12)的可用文档对我来说太短了,没有包括这种情况。

如何在Java中执行查询?任何帮助都将不胜感激。

非常感谢!

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38202897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档