Query de Mongo généré par Java Code:
{ "pipeline": [{ "$match": { "Id": "09cd9a5a-85c5-4948-808b-20a52d92381a" } }, { "$group": { "_id": "$result", "id": { "$first": "$result" }, "labelKey": { "$first": { "$ifNull": ["$result", "$result"] } }, "value": { "$sum": 1 } } }] }
3 Réponses :
Je suis sûr que je suis sûr une voie plus "appropriée", mais c'est ce que je pourrais aborder rapidement: En raison du fait que le second groupe est uniquement sur 4 documents sur 4 documents Ne vous sentez pas trop mal de le faire. P> p>
J'ai utilisé $ facet .
la MongoDB Stage $ Facet vous permet d'exécuter plusieurs pipelines indépendants dans le stade d'un pipeline, tout en utilisant les mêmes données. Cela signifie que vous pouvez exécuter plusieurs agrégations avec les mêmes étapes préliminaires et les étapes successives. P> sortie: p> {
"results": [{
"_id": null,
"value": 52 // count of both '' and null.
}, {
"_id": "Approved",
"value": 83
}, {
"_id": "Rejected",
"value": 3661
}]
}
Changer le groupe par comme ci-dessous résolu le problème
{ "$group": { "_id": { "$ifNull": ["$result", ""] }, "id": { "$first": "$result" }, "labelKey": { "$first": { "$ifNull": ["$result", "$result"] } }, "value": { "$sum": 1 } } }
Pouvez-vous partager l'échantillon de sortie? Que devrait être le résultat de la requête!
Pour les valeurs de
null code> ou "video vide"
"" code> alors faites quelque chose comme
{"$ groupe": {"$ ifnull": [ "$ résultat", ""]} ,.same accumulateurs ..}} code>. Le
$ IFNULL code> Tranposerait tout autre
NULL code> Valeurs de
$ résultat code> dans la touche de regroupement pour être une "chaîne vide", comme les autres valeurs Ce domaine sont lesquels vous voulez les "grouper" avec. Si vous aviez besoin de quelque chose de plus élaboré, vous pouvez regarder
$ Cond code>. Mais il s'agit essentiellement de tester la valeur code> résultat code> dans le groupe
_ID code> et combinant là où vous le souhaitez.
Notez également que
$ premier code> ou
$ DERNIER code> ne doit vraiment pas être utilisé sans un
$ trier code> Stage précédant le groupe
$ (code> . Donc, votre code devrait vraiment inclure un
$ trier code> pour mettre les choses dans l'ordre attendu en premier, sinon il n'y a rien qui détermine ce que
$ Premier code> prend en réalité. changerait les itérations ultérieures du code.