Je les documents suivants:Comment groupe et obtenir par dessus N dans chaque groupe et d'autres domaines de haut N dans MongoDB
{
"_id" : ObjectId("599b1a789125130dfc613188"),
"traj_id" : 1,
"aisle_id" : "Aisle01",
"traf_seq" : [
{
"node" : "catg1",
"pst" : 1,
"time" : 12.0
},
{
"node" : "catg2",
"pst" : 2,
"time" : 12.0
}
]
},
{
"_id" : ObjectId("599b1a789125130dfc613188"),
"traj_id" : 2,
"aisle_id" : "Aisle01",
"traf_seq" : [
{
"node" : "catg1",
"pst" : 1,
"time" : 12.0
},
{
"node" : "catg2",
"pst" : 2,
"time" : 12.0
},
{
"node" : "catg1",
"pst" : 1,
"time" : 12.0
},
]
},
{
"_id" : ObjectId("599b1a789125130dfc613188"),
"traj_id" : 3,
"aisle_id" : "Aisle02",
"traf_seq" : [
{
"node" : "catg1",
"pst" : 1,
"time" : 12.0
},
{
"node" : "catg2",
"pst" : 2,
"time" : 12.0
},
{
"node" : "catg2",
"pst" : 3,
"time" : 12.0
},
]
}
Je suis en train de les principales catégories N visités dans chaque Aisle. Dites N = 1, sortie prévue serait quelque chose comme:
"_id" : {
"aisle" : "Aisle01",
"catg" : "catg1"
},
"maxValue" : 3.0
"_id" : {
"aisle" : "Aisle02"
"catg" : "catg2"
},
"maxValue" : 2.0
Depuis dans l'allée 1, catg 1 a été visité le nombre maximum de fois (c.-à-3), et catg2 dans l'allée a été visité 2 fois (le maximum).
Je peux obtenir le nombre maximum dans chaque allée, mais j'ai du mal à obtenir le nom de la catégorie, puisque je l'exclure dans le groupe par champ. OU je reçois les noms de toutes les catégories, ce que je ne veux pas. Ci-dessous ce que j'ai jusqu'à présent:
db.test.aggregate([
{$unwind:"$traf_seq"},
{$group: {
"_id": {
"traj_id" :"$traj_id",
"node": "$traf_seq.node",
"aisle":"$aisle_id"
},
"count":{
"$sum":1}
}},
{$group: {
"_id": {
"sumnode":"$_id.node",
"aisle": "$_id.aisle"},
"distcount":{
"$sum":1},
}},
{$group: {
"_id": {
"aisle": "$_id.aisle"},
"otherField1":{$push:"$_id.sumnode"},
"maxValue": {$max:"$distcount"}
}}
Merci pour la réponse .. ça marche! Désolé j'ai oublié de le mentionner dans la question, mais si je veux compter des visites distinctes (disons que catg 1 apparaît deux fois par document par traj_id je veux le compter seulement comme 1), où dois-je ajouter? Puis-je ajouter traj_id dans le groupe? –
NM .. je l'ai eu .. juste dû ajouter l'allée dans tous les groupements .. Merci! –