sql >> Databasteknik >  >> NoSQL >> MongoDB

Förvandla aggregering inklusive $cond till DBObject i java

Du kan använda aggregeringsfrågan nedan för Mongo Java 2.13 version. Jag har förenklat vissa operationer.

 List<DBObject> aggregates = Arrays.asList(new BasicDBObject("$project", new BasicDBObject("dt", "$dt").
            append("mc", "$mc").
            append("uplift", "$uplift").
            append("baseAvg", "$baseAvg").
            append("baseUp", new BasicDBObject("$add", Arrays.<Object>asList("$uplift", "$baseAvg"))).
            append("share", new BasicDBObject("$cond", Arrays.<Object>asList(new BasicDBObject("$eq", Arrays.<Object>asList("$baseAvg", 0)),
                    0, new BasicDBObject("$divide",  Arrays.<Object>asList("$uplift", "$baseAvg")))))));

För 3.x-versionen kan du använda nedanstående aggregering.

 MongoClient mongoClient = new MongoClient();
 MongoDatabase db = mongoClient.getDatabase("db");
 MongoCollection<Document> collection = db.getCollection("collection");
 Bson aggregates = Aggregates.project(Projections.fields(Projections.include("dt", "mc", "uplift","baseAvg"),
               new Document("baseUp", new Document("$add", Arrays.<Object>asList("$uplift", "$baseAvg"))),
               new Document("share", new Document("$cond", Arrays.<Object>asList(new Document("$eq", Arrays.<Object>asList("$baseAvg", 0)),
                                        0, new Document("$divide",  Arrays.<Object>asList("$uplift", "$baseAvg")))))));
 List<Document> results = collection.aggregate(Arrays.asList(aggregates)).into(new ArrayList<>());



  1. Hur skulle jag kunna skriva aggregering utan att överskrida den maximala dokumentstorleken?

  2. Hur man ändrar underdokument efter att ha hittat med mongoose

  3. Så här returnerar du bara de kapslade dokumenten i en array från alla dokument

  4. Sortera arrayen i dokumentet med MongoDB