ich bauen eine Aggregation in MongoDBin DBObject in Java
{
"$project": {
"dt": "$dt",
"mc": "$mc",
"uplift": "$uplift",
"baseAvg": "$baseAvg",
"baseUp": { $add: [ "$uplift", "$baseAvg" ] },
"share": {
"$cond": [{
"$eq": ["$baseAvg", 0]
}, 0, {
"$divide": ["$uplift", "$baseAvg"]
}]
}
}
}
Ich versuche, die Abfrage mithilfe DBObject zu bauen, da es keine ProjectOperation die Bedingung unterstützt ist. Aber ich bleibe stecken.
Wenn ich schreibe dies:
ArrayList condArray = new ArrayList();
condArray.add(new BasicDBObject("$eq", new DBObject[] { new BasicDBObject("$baseAvg", 0) }));
condArray.add(0);
condArray.add(new BasicDBObject("$divide", new DBObject[] { new BasicDBObject("$uplift", "$baseAvg") }));
DBObject doc = new BasicDBObject("$baseAvg", 0);
DBObject operation = new BasicDBObject("$project",
new BasicDBObject(groupItem, "$_id." + groupItem)
.append("mc", "$mc")
.append("uplift", "$uplift")
.append("baseAvg", "$baseAvg")
.append("sumBaseUp", new BasicDBObject("$add", new DBObject[] {"$uplift", "$baseAvg"}))
.append("share", new BasicDBObject("$cond", condArray)));
ich dies als Ergebnis:
{
"$project": {
"dt": "$dt",
"mc": "$mc",
"uplift": "$uplift",
"baseAvg": "$baseAvg",
"sumBaseUp": {
"$add": [{
"$uplift": "$baseAvg"
}]
},
"share": {
"$cond": [{
"$eq": [{
"$baseAvg": 0
}]
}, 0, {
"$divide": [{
"$uplift": "$baseAvg"
}]
}]
}
}
}
Jeder weiß, was ich tun sollte?
Was ist Ihre Mongo-Java-Version? – Veeram
@Veeram seine ** Java-Mongo-Treiber: 2.13.2 ** –
Nur auf 3.2.0 aktualisiert seit meinem mongo Server ist auch 3,2 –