I have the following data which I am querying on:
[
{
"_id": 1,
"domainName": "test1.com",
"hosting": "hostgator.com",
"to": "nanjing",
"travelDate": "09/06/2022",
"trainNumber": 123
},
{
"_id": 2,
"domainName": "test2.com",
"hosting": "aws.amazon.com",
"to": "beijing",
"travelDate": "09/02/2022",
"trainNumber": 123
},
{
"_id": 3,
"domainName": "test3.com",
"hosting": "aws.amazon.com"
},
{
"_id": 4,
"domainName": "test4.com",
"hosting": "hostgator.com",
"to": "shanghai",
"travelDate": "09/06/2022",
"trainNumber": 1234
},
{
"_id": 5,
"domainName": "test5.com",
"hosting": "aws.amazon.com",
"to": "wuhan",
"travelDate": "09/06/2022",
"trainNumber": 1234
},
{
"_id": 6,
"domainName": "test6.com",
"hosting": "cloud.google.com",
"to": "nanjing",
"travelDate": "09/06/2022",
"trainNumber": 123
},
{
"_id": 7,
"domainName": "test7.com",
"hosting": "aws.amazon.com",
"to": "nanjing",
"travelDate": "09/02/2022",
"trainNumber": 123
},
{
"_id": 8,
"domainName": "test8.com",
"hosting": "hostgator.com",
"to": "nanjing",
"travelDate": "09/02/2022",
"trainNumber": 123
},
{
"_id": 9,
"domainName": "test9.com",
"hosting": "cloud.google.com",
"to": "nanjing",
"travelDate": "09/02/2022",
"trainNumber": 123
},
{
"_id": 10,
"domainName": "test10.com",
"hosting": "godaddy.com",
"to": "nanjing",
"travelDate": "09/02/2022",
"trainNumber": 123
}
]
I am using the following query to get the filed to as a list of string
db.collection.aggregate({
$match: {
travelDate: {
$eq: "09/06/2022"
},
trainNumber: {
$eq: 1234
}
}
},
{
$group: {
_id: "",
destStations: {
$push: "$to"
}
}
},
{
$project: {
_id: 0
}
})
The above query returns the following result as expected:
[
{
"destStations": [
"shanghai",
"wuhan"
]
}
]
But when I am trying to convert it using the following spring mongo aggregation I cannot get the appropriate result. Can anyone help?
Aggregation agg = newAggregation( match(Criteria.where("travelDate").is(travelDate).and("trainNumber").is(trainNumber)),
group("id").push("to").as("destStations"),
project().andExclude("id")
);