J'essaie de regrouper tous les champs distincts, puis de faire une recherche dans une autre table. Le problème est que j'ajoute trop de résultats pour le même utilisateur dans la recherche, alors je me demande comment je peux regrouper ces résultats en interne, puis dans l'étape suivante, ajouter une autre recherche dans une autre table. Actuellement, j'ai le code suivant :
Post.aggregate([
{ "$group" : {"_id" : { "id_fanpage": "$id_fanpage" },"total": { $sum: 1 } } },
{
"$lookup": {
"from": "v3_post_reaccion_angry",
"localField": "_id.id_fanpage",
"foreignField": "id_fanpage",
"as": "resultingAngries"
}
},
{
"$lookup": {
"from": "v3_post_reaccion_compartir",
"localField": "_id.id_fanpage",
"foreignField": "id_fanpage",
"as": "resultingCompartir"
}
}
]).exec(function(err, results){
console.log(results);
return results
}).then(success(res))
Ce que j'essaie de faire, c'est de distinguer les lignes de Post par "id_fanpage", puis de joindre une autre table par l'id_fanpage retourné, ce qui fonctionne comme prévu, mais les résultats sont les suivants :
{
"_id": {
"id_fanpage": "5a63a96d1aa940ca0ada1c82"
},
"total": 831,
"resultingAngries": [
{
"_id": "5a71ccda1aa940dd154caf83",
"id_post": "5a71ccda1aa940dd154caf82",
"id_fanpage": "5a63a96d1aa940ca0ada1c82",
"facebook_usuario_id": 345346565665,
"facebook_usuario_nombre": "AAAAAAAAAAAAAAAAA"
},
{
"_id": "5a71cd6b1aa940dd154ddb43",
"id_post": "5a71cd6b1aa940dd154ddb40",
"id_fanpage": "5a63a96d1aa940ca0ada1c82",
"facebook_usuario_id": "44444444444444444",
"facebook_usuario_nombre": "XXXXXXXXXXXXXXXX"
},
{
"_id": "5a71d7f61aa940dd156b60f4",
"id_post": "5a71d7f61aa940dd156b60e9",
"id_fanpage": "5a63a96d1aa940ca0ada1c82",
"facebook_usuario_id": "asdf12345232421",
"facebook_usuario_nombre": "YYYYYYYYYYYYYY"
},
{
"_id": "5a71cde11aa940dd154ec514",
"id_post": "5a71cde11aa940dd154ec513",
"id_fanpage": "5a63a96d1aa940ca0ada1c82",
"facebook_usuario_id": "asdf2345234555",
"facebook_usuario_nombre": "ZZZZZZZZZZZZZZ"
},
{
"_id": "5a71cdcb1aa940dd154e917a",
"id_post": "5a71cdcb1aa940dd154e9178",
"id_fanpage": "5a63a96d1aa940ca0ada1c82",
"facebook_usuario_id": "44444444444444444",
"facebook_usuario_nombre": "XXXXXXXXXXXXXXX"
}
]
}
Le problème est que je veux regrouper tous les résultats dans resultingAngries par facebook_usuario_id et aussi être capable d'ajouter la même chose à la recherche suivante, mais pour autant que je sache, je ne peux pas utiliser un groupe après la première recherche sans affecter la recherche suivante. Donc le résultat devrait être :
{
"_id": {
"id_fanpage": "5a63a96d1aa940ca0ada1c82"
},
"total": 831,
"resultingAngries": [
{
"_id": "this is my user id 1111111111",
"count": N,
},
{
"_id": "this is my user id 2222222222",
"count": Y,
}
],
"resultingLikes": [
{
"_id": "this is my user id 1111111111",
"count": N,
},
{
"_id": "this is my user id 2222222222",
"count": Y,
}
],
},
{
"_id": {
"id_fanpage": "5a63a96d1aa942345wedf23455s"
},
"total": 20,
"resultingLikes": [
{
"_id": "this is my user id 1111111111",
"count": N,
},
{
"_id": "this is my user id 2222222222",
"count": Y,
}
],
},
"resultingAngries": [
{
"_id": "this is my user id 1111111111",
"count": N,
},
{
"_id": "this is my user id 2222222222",
"count": Y,
}
],
Et ainsi de suite. J'ai déjà vu l'agrégation et les recherches et je ne suis pas sûr que $addToSet puisse le faire, parce que je ne peux pas grouper en interne jusqu'à présent, donc appliquer addToSet me donne du fil à retordre. Une aide serait appréciée.