Я пытаюсь вытащить элемент в массиве с е два уровня сложности глубокой
Мой документ:
> db.users.find({ mail : '[email protected]'}).pretty()
{
"_class" : "bean.User",
"_id" : ObjectId("52f504bb2f9dd91186211537"),
"commandes" : [
{
"adresse" : "15 rue de la soif",
"codePostal" : "29200",
"idCommande" : 1,
"montantTotal" : 0,
"nom" : "TOTO",
"prenom" : "tata",
"ville" : "Brest",
"voyagesSouscrits" : [
{
"idVoyage" : "123",
"duree" : 1,
"nbPersonnes" : 0,
"villeDepart" : "Nantes",
"prixVoyage" : 999999
},
{
"idVoyage" : "addVoyageSouscrit",
"duree" : 1,
"nbPersonnes" : 0,
"villeDepart" : "Toulouse",
"prixVoyage" : 7777
}
]
},
{
"idCommande" : 1,
"dateCommande" : ISODate("2014-02-07T16:07:23.930Z"
),
"nom" : "TOTO",
"prenom" : "tata",
"adresse" : "15 rue de la soif",
"ville" : "Brest",
"codePostal" : "29200",
"montantTotal" : 0,
"voyagesSouscrits" : [
{
"idVoyage" : "123",
"duree" : 1,
"nbPersonnes" : 0,
"villeDepart" : "Toulouse",
"prixVoyage" : 666666
}
]
}
],
"mail" : "[email protected]",
"password" : "tata"
}
В качестве первого шага я хочу, чтобы тянуть " voyagesSoucrits "с идентификатором" 123 ".
Согласно этому сообщению: MongoDB pull element from array two levels deep
Я пробовал:
> db.users.update({ mail : '[email protected]', "commandes.voyagesSouscrits.idVoyage" : "123"},{$pull : {"commandes.$.voyagesSouscrits" : {"commandes.voyagesSouscrits.idVoyage" : "123"}}})
Это не сработало!
Я сделал что-то не так, но я не могу его найти .... Любая идея?
Отлично! Спасибо! – Lombric
, и если я хочу добавить ограничение на мой $ pull на атрибут уровня выше? например: {$ pull: {"commandes. $. voyagesSouscrits": {dateCommande: null, "idVoyage": "123"}}} – Lombric
Если это не внутри массива у команд. $. voyagesSouscrits level then that не работа. Для любых других ограничений вы хотите изменить часть запроса. –