java - MongoDB 3.2 Java 驱动程序 : How To Use AggregateOperation

标签 java mongodb

我对使用 MongoDB AggregateOperation 驱动程序执行 $unwind Activity 的示例代码感兴趣。 AggregateOperation 似乎与 MongoDB 版本 3+ Java 驱动程序相关。

使用 AggregateOperation,我将如何展开下面显示的“sizes”数组?

{ "_id" : ObjectId("56928aa190f425c1e987abc3d"), "item" : "Fleece-lined jeans", "sizes" : [ "30", "31", "38", "40", "42" ], "count" : 3 }

我在这个论坛上看到的聚合示例似乎主要使用 BasicDBObject 对象,并且这些对象显然不与版本 3 Java API 混合。

最佳答案

您必须在内部调用静态方法parse 导入 org.bson.Document; 类。

因此,下面的代码行应该在 mongodb3.0 驱动程序中为您展开 sizes 数组对象。

MongoClient client = new MongoClient();
        MongoDatabase mongoDatabase = client.getDatabase("test");
        MongoCollection<Document> mongoCollection = mongoDatabase
                .getCollection("unwind");

        List<Document> pipeline;

        pipeline = Arrays.asList(Document.parse("{$unwind:\"$sizes\"}"));

        List<Document> results = mongoCollection.aggregate(pipeline).into(
                new ArrayList<Document>());

        for (Document cur : results) {
            System.out.println(cur.toJson());
        }

适用于 3.2 java 驱动程序。

import static com.mongodb.client.model.Aggregates.unwind;

Bson unwind = unwind("$sizes");

        List<Bson> pipeline = asList(unwind);

        MongoClient c = new MongoClient();
        MongoCollection<Document> collection = c.getDatabase("test")
                .getCollection("unwind");

        List<Document> results = collection.aggregate(pipeline).into(
                new ArrayList<Document>());

        for (Document cur : results) {
            System.out.println(cur.toJson());
        }
    }

这里test是数据库,unwind是集合。 这将展开尺寸数组对象,下面是输出文档。

{ "_id" : { "$oid" : "5692fed991b81360d23f1b54" }, "item" : "Fleece-lined jeans", "sizes" : "30", "count" : 3.0 }
{ "_id" : { "$oid" : "5692fed991b81360d23f1b54" }, "item" : "Fleece-lined jeans", "sizes" : "31", "count" : 3.0 }
{ "_id" : { "$oid" : "5692fed991b81360d23f1b54" }, "item" : "Fleece-lined jeans", "sizes" : "38", "count" : 3.0 }
{ "_id" : { "$oid" : "5692fed991b81360d23f1b54" }, "item" : "Fleece-lined jeans", "sizes" : "40", "count" : 3.0 }
{ "_id" : { "$oid" : "5692fed991b81360d23f1b54" }, "item" : "Fleece-lined jeans", "sizes" : "42", "count" : 3.0 }

上面的代码没有使用 DBObject 类,该类在 3.0 版本的 MongoDB java 驱动程序中已弃用。

已在 3.2 版本的 mongodb 驱动程序中测试了 3.0 版本的代码,并产生了相同的结果。

关于java - MongoDB 3.2 Java 驱动程序 : How To Use AggregateOperation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34712260/

相关文章:

java - primefaces 的数据模式不显示刷新数据形式的支持 bean

java - 需要帮助减少重复代码

node.js - 等待 promise

Mongodb如何强制执行唯一的数据库引用ID?

java - Bison Java示例

java - 简单的 TextToSpeech 代码

mongodb - MongoDB 如何同时进行分片和复制?

mongodb - 如何在 mongoDB 中使用 findOne 获取此查询形式的嵌套数组

java - 如何根据表中同一行上其他元素的文本值获取元素的文本?

node.js - 如何使用两个独特的 Mongoose 处理验证