db.FNTeams.aggregate([ { "$unwind": "$mailIDs" },{ "$lookup": {"from":
"FNContacts", "localField": "mailIDs", "foreignField": "_id", "as":
"productObjects" }}, { "$group": { "_id": "$_id", "mailIDs": { "$push":
"$mailIDs" }, "UserID":{"$push":"$UserID"},"TeamName":
{"$push":"$TeamName"},"productObjects": { "$push": "$productObjects" }}}])
How to query the above query in java, I have tried using below code
DBCollection collection = db.getCollection("FNActivity");
DBObject unwind1 = new BasicDBObject("$unwind", "$mailIDs");
DBObject lookup = new BasicDBObject("$lookup", new BasicDBObject("from",
"FNContacts")
.append("localField", "mailIDs").append("foreignField",
"_id").append("as", "mailWithID"));
BasicDBObject pushField = new BasicDBObject();
pushField.append("_id", "$_id");
pushField.append("UserID", new BasicDBObject("$push", "$UserID"));
pushField.append("TeamName", new BasicDBObject("$push", "$TeamName"));
pushField.append("TeamDesc", new BasicDBObject("$push", "$TeamDesc"));
pushField.append("Status", new BasicDBObject("$push", "$Status"));
pushField.append("MailWithID", new BasicDBObject("$push",
"$mailWithID"));
DBObject group = new BasicDBObject("$group", pushField);
AggregationOutput output = collection.aggregate(Arrays.asList(group,
lookup, unwind1));
but I'm getting empty in output. The above query gives the exact output what I want while run in cmd.