Hi,
I have basic operation where I’m doing aggregation with date data in MongoDB with Java.
I’m not getting proper output in java but when I’m executing it in mongo shell it works fine.
{
"_id": {
"$oid": "64a67f32dbe7c36e2e6c15c8"
},
"name": {
"user": "xyz"
},
"updated_at": {
"$date": "2023-07-20T22:44:51.334Z"
}
"data": {
"age": "55",
"address": [{
"$ref": "Addresses",
"$id": {
"$oid": "64a67f2fdbe7c36e2e6c15c6"
}
}, {
"$ref": "Addresses",
"$id": {
"$oid": "64a67f2fdbe7c36e2e6c15c7"
}
},
]
}
}
Addresses:
{
"_id": {
"$oid": "64a67f2fdbe7c36e2e6c15c6"
},
"name": {
"type": "permenant"
},
"address":"permenant address 1"
}
{
"_id": {
"$oid": "64a67f2fdbe7c36e2e6c15c7"
},
"name": {
"type": "secondary"
},
"address":"permenant address 2"
}
Java code:
private static void getData(MongoCollection<Document> products) {
Date currentDate = new Date(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(5));
Bson match = match(gte("updated_at", currentDate));
Bson lookup = lookup("address", "address.$id", "_id", "address");
Bson unwind = unwind("$address");
List<Document> results = products.aggregate(Arrays.asList(match, lookup, unwind)).into(new ArrayList<>());
System.out.println("result given" + results.size());
results.forEach(printDocuments());
}