Je suis novice dans l'utilisation de mongo db et j'ai essayé de trouver un moyen d'obtenir le compte d'un tableau imbriqué dans la collection mongo db qui ressemble à ceci.Nombre et mise à jour d'un tableau imbriqué dans mongodb
{
city_id: 'C1',
city_name: "C1Name",
wards: [{
ward_id: "W1",
ward_number: "1",
areas: [{
area_id: "a1",
area_name: "a1Name"
},
{
area_id: "a2",
area_name: "a2Name"
}]
},
{
ward_id: "W2",
ward_number: "2",
areas: [{
area_id: "a21",
area_name: "a21Name"
}, {
area_id: "a22",
area_name: "a22Name"
}]
}]
},
{
city_id: 'C2',
city_name: "C2Name",
wards: [{
ward_id: "W21",
ward_number: "21",
areas: [{
area_id: "aw21",
area_name: "aw21Name"
},{
area_id: "aw22",
area_name: "aw22Name"
}]
},{
ward_id: "W132",
ward_number: "132",
areas: [{
area_id: "a132",
area_name: "a132Name"
}, {
area_id: "a1332",
area_name: "a2112Name"
}]
}]
}
maintenant ici je veux nombre de domaines dans city_details où CITY_ID = C1 et ward_id = W1
J'utilise l'agrégation comme
db.city_details.aggregate(
{$match:{"city_id":"C1"}},
{$project:{"wards":"$wards"}},
{$unwind:"$wards"},
{$project{"ward":"$wards.id","area":"$wards.areas"}},
{$match:{ward:"W1"}},
{$project:{$count:{"area"}}
)
Cela devrait me faire compter comme 2 mais il n » est pas t travaillant.
Comment puis-je mettre à jour ces zones de tableaux?
Hii, merci Julian votre requête a fait le travail mais je ne comprends pas l'utilisation de deux signes $ dans l'opérateur $ eq – TGW
Plus de détails peuvent être trouvés dans le document [mongodb docu] (https: //docs.mongodb. com/manual/reference/agrégation-variables /). Mais en somme, avec _ $$ _ vous pouvez accéder à la valeur actuelle de _ward_. –