Hi my mongo collections contains following documents:
{
"_id" : ObjectId("539efd5b254bb5f65c9da94e"),
"iInfo" : [
{ "ifout" : 0, "iferror" : 0, "ifdes" : "N/A", "ifin" : 0 },
{ "ifout" : 0, "iferror" : 10, "ifdes" : "N/A", "ifin" : 0 },
{ "ifout" : 0, "iferror" : 4, "ifdes" : "N/A", "ifRemotePort" : "0", "ifin" : 0 },
{ "ifout" : 0, "iferror" : 0, "ifdes" : "N/A", "ifin" : 0 }
]
}
{
"_id" : ObjectId("539efd76254bb5f65c9da94f"),
"iInfo" : [
{ "ifout" : 0, "iferror" : 0, "ifdes" : "N/A", "ifin" : 0 },
{ "ifout" : 0, "iferror" : 7, "ifdes" : "N/A", "ifin" : 0 },
{ "ifout" : 0, "iferror" : 4, "ifdes" : "N/A", "ifRemotePort" : "0", "ifin" : 0 },
{ "ifout" : 110, "iferror" : 0, "ifdes" : "N/A", "ifin" : 0 }
{ "ifout" : 90, "iferror" : 0, "ifdes" : "N/A", "ifin" : 0 }
]
}
{
"_id" : ObjectId("539efed7254bb5f65c9da950"),
"iInfo" : [
{ "ifout" : 10, "iferror" : 0, "ifdes" : "N/A", "ifin" : 0 },
{ "ifout" : 0, "iferror" : 10, "ifdes" : "N/A", "ifin" : 0 },
{ "ifout" : 0, "iferror" : 4, "ifdes" : "N/A", "ifRemotePort" : "0", "ifin" : 0 },
{ "ifout" : 0, "iferror" : 0, "ifdes" : "N/A", "ifin" : 0 }
]
}
{
"_id" : ObjectId("539efeed254bb5f65c9da951"),
"iInfo" : [
{ "ifout" : 0, "iferror" : 0, "ifdes" : "N/A", "ifin" : 0 },
{ "ifout" : 0, "iferror" : 10, "ifdes" : "N/A", "ifin" : 0 },
{ "ifout" : 0, "iferror" : 4, "ifdes" : "N/A", "ifRemotePort" : "0", "ifin" : 0 },
{ "ifout" : 100, "iferror" : 0, "ifdes" : "N/A", "ifin" : 0 },
{ "ifout" : 210, "iferror" : 0, "ifdes" : "N/A", "ifin" : 0 }
]
}
Now I want to sort this documents as below:
{
"_id" : ObjectId("539efeed254bb5f65c9da951"),
"iInfo" : [
{ "out" : 210,"iferror" : 0,"ifdes" : "N/A","ifin" : 0}
]
}
{
"_id" : ObjectId("539efd76254bb5f65c9da94f"),
"iInfo" : [
{ "out" : 110,"iferror" : 0,"ifdes" : "N/A","ifin" : 0}
]
}
{
"_id" : ObjectId("539efeed254bb5f65c9da951"),
"iInfo" : [
{ "out" : 100,"iferror" : 0,"ifdes" : "N/A","ifin" : 0}
]
}
{
"_id" : ObjectId("539efed7254bb5f65c9da950"),
"iInfo" : [
{ "out" : 90,"iferror" : 0,"ifdes" : "N/A","ifin" : 0}
]
}
So for this I write my mongo query as below
db.demo.aggregate([
{ "$project": { "_id": 1, "out": "$iInfo.ifout"} },
{ "$unwind": "$out" },
{ "$sort": { "_id": 1, "out": -1 } },
{ "$group": { "_id": "$_id" , "iInfo": { "$push": { "out":"$out" } } } }
])
and the above query returns output as below:
{
"_id" : ObjectId("539efeed254bb5f65c9da951"),
"iInfo" : [
{ "out" : 100 },
{ "out" : 0 },
{ "out" : 0 },
{ "out" : 0 }
]
}
{
"_id" : ObjectId("539efed7254bb5f65c9da950"),
"iInfo" : [
{ "out" : 10 },
{ "out" : 0 },
{ "out" : 0 },
{ "out" : 0 }
]
}
{
"_id" : ObjectId("539efd76254bb5f65c9da94f"),
"iInfo" : [
{ "out" : 90 },
{ "out" : 0 },
{ "out" : 0 },
{ "out" : 0 }
]
}
{
"_id" : ObjectId("539efd5b254bb5f65c9da94e"),
"iInfo" : [
{ "out" : 0 },
{ "out" : 0 },
{ "out" : 0 },
{ "out" : 0 }
]
}
So, how can I get the desire output using mongo and java code ?