0
votes

mettre à jour tous les éléments du sous-documentation où le sous-couche fait partie de la liste

J'ai un document avec une personne commercialisée avec différentes adresses de la ville à MongoDB. XXX PRE>

Mes classes d'entités sont une personne, une ville et une adresse.
Si cette personne se déplace vers un autre pays comme Canda et veut mettre à jour la France - Subdocument de Paris. P>

{
  "_id": "name",
  "cities": [
    {
      "id": "1234abc",
      "city_name": "London",
      "country": "England",
      "addresses": [
        {
          "Home": "Unit 14 Edgar Buildings George Street"
        },
        {
          "Office": "Studio 103 The Business Centre 61"
        }
      ]
    },
    {
      "id": "1234xyz",
      "city_name": "Toronto",
      "country": "Canada",
      "addresses": [
        {
          "Home": "Toronto City Hall 100 Queen St W"
        },
        {
          "Office": "4110 Yonge StNorth York, ON M2P 2H3"
        }
      ]
    }
  ]
}


0 commentaires

3 Réponses :


0
votes

S'il vous plaît, pouvez-vous vérifier ici une fois? Critères.Où ("villes._id"). Est (VILLAID) . Ici, je suis mince que nous devons utiliser "villes.id" .


0 commentaires

0
votes

Pour supprimer un document de ville spécifique:

Update update = new Update().addToSet("cities",city);


0 commentaires

0
votes

Merci pour les réponses Mrshama et Ravi.

Maintenant, je la supprime et appuyez sur le document mis à jour dans la liste, au lieu de mettre à jour une entité de sous-documentation. Et ça marche pour moi. Après avoir accédé à l'identifiant d'objet en faisant Tohexstring.

Supprimer l'opération update.pull ("villes", requête.Query (critères.where ("id"). Est (id.tohexsstring ()))); mongooperations.upsert (requête, mise à jour, personne.class);

Ajouter une opération : update.push ("villes", sous-documentation); mongoopérations.updatefirst (requête, mise à jour, personne.class));


0 commentaires