mongodb se détendre tableau imbriquée à l'intérieur d'un tableau de documents
Dans MongoDB, j'ai besoin d'être en mesure de vous détendre imbriquée un tableau dans un document à l'intérieur d'un tableau à l'intérieur du document principal.
{
"_id" : ObjectId("5808d700536d1a3d69f4cf51"),
"last_name" : "Maity",
"xiith_mark" : 58,
"id" : "3539488",
"first_name" : "Harshavardhan",
"course_name" : "BE/B.Tech",
"institute_name_string" : "Abhayapuri College, P.O. Abhayapuri",
"profile_percentage" : 45,
"xiith_mark_type" : "Percentage",
"xth_mark_type" : "Percentage",
"date_of_birth" : "14-April-1993",
"xth_mark" : 30,
"last_login" : 1470827224,
"percentage" : 55,
"job_details" : [
{
"status" : NumberLong(6),
"applied_date" : NumberLong(1470831441),
"job_id" : NumberLong(92928),
"contact_viwed_status" : 0,
"label_name" : [
"shortlisted",
"rejected"
],
"questionnaire_status" : 0,
"batch_id" : NumberLong(6),
"call_letter" : NumberLong(812)
},
{
"status" : NumberLong(6),
"applied_date" : NumberLong(1470831441),
"job_id" : NumberLong(92928),
"contact_viwed_status" : 0,
"label_name" : [
"shortlisted",
"rejected"
],
"questionnaire_status" : 0,
"batch_id" : NumberLong(6),
"call_letter" : NumberLong(812)
}
],
"branch_name" : "Applied Electronics",
"candidate_state_name" : "West Bengal",
"candidate_city_name_string" : "Kolkata",
"10" : 10,
"12" : 12,
"skills" : "",
"gender" : "Male",
"fw_id" : "FW15884830",
"cgpa" : 0,
"picture_path" : "",
"hq_passout_year" : 2019
}
Basé sur l'enregistrement ci-dessus j'ai besoin de compter le travail des étiquettes (job_details.label_name).
J'ai essayé la requête suivante:
db.response.aggregate(
{"$match":type_match},
{"$unwind": "$job_details" },
{"$group":
{
"_id":"$job_details.label_name",
"count": {"$sum": 1 }
}
}
])
La sortie est:
{
"count": 2,
"_id": [
"shortlisted",
"rejected"
]
}
Mais je veux le sortie:
[
{
"count": 1,
"_id": "shortlisted"
},
{
"count": 1,
"_id": "rejected"
}
]
Comment puis-je obtenir ce résultat?
Demandez-vous comment compter le nombre d'éléments dans le "job_details.label_name" tableau? Il peut être plus facile, il suffit de faire le décompte sur le côté client.
Requête d'agrégation que vous avez posté en question est syntaxiquement incorrect. Il n'y a pas de départ "[" corset, mais il y a une fin.
J'ai l'amélioration de la formulation et de la mise en forme de votre question, pour le rendre plus lisible; aussi, j'ai ajouté la balise agrégation-cadre.
Requête d'agrégation que vous avez posté en question est syntaxiquement incorrect. Il n'y a pas de départ "[" corset, mais il y a une fin.
J'ai l'amélioration de la formulation et de la mise en forme de votre question, pour le rendre plus lisible; aussi, j'ai ajouté la balise agrégation-cadre.
OriginalL'auteur SuFi | 2016-10-21
Vous devez vous connecter pour publier un commentaire.
Dans détendez-vous stade, le champ doit être un tableau de terrain. Si pas de tableau de champ, il le traite comme matrice de 1 élément.
De la documentation:
Changé dans la version 3.2: $détendez-vous en scène ne fait plus d'erreur sur le tableau non opérandes. Si l'opérande ne se résout pas en un tableau mais ne manque pas, null, ou un tableau vide, $détendre traite de l'opérande comme un seul élément de tableau.
Réponse à votre requête:
Consulter Shell Sortie
{ "result" : [ ], "ok" : 1 }
vous pouvez poster instantané de la coquille de sortie.
désolé Nigil qui est au travail, mais dans mon document n'ai plus le changement. Dans le document ci-dessus job_detail je déclare en un seul document en réalité, c'est la liste des documents.
Désolé Nigil. Cette requête fonctionne mais c'était mon erreur. Mon document a petit changement . Que job_details n'est pas un document unique, qui est de la liste des documents. Par exemple: "job_details" :[ { "status" : NumberLong(6), "label_name" : [ "nominé", "rejeté" ] },]
OriginalL'auteur inaitgaJ