Vraiment nouveau pour l'utilisation de Mongodb avec Morphia et voir beaucoup de réponses avancées comment faire ceci.Dans Morphia, comment puis-je mettre à jour un objet incorporé dans un ArrayList?
Je veux faire simple s'il est possible et j'ai ce @Embedded
objet appelé
fileObjects
qui contient Files
objets.
Je ne peux pas mettre à jour les champs à l'intérieur du Files
. Je souhaite mettre à jour un seul champ pour le String fileHash
.
@Entity
public class BatchData {
@Id private ObjectId id;
@Embedded
public ArrayList<Files> fileObjects = new ArrayList<Files>();
}
MISE À JOUR .. La lecture du wiki à Morphia Updating dont « vraiment » dire comment faire que lorsque le tableau contient Integer
comme ceci:
@Embedded
List<Integer> roomNumbers = new ArrayList<Integer>();
Voici ce que j'essaie jusqu'à présent :
mongo.createUpdateOperations(BatchData.class).add("fileObjects", Files, false);
le Files
que cet insert de code est déjà dans le mongo. Le false
ne détecte pas cela et l'insère à la fin de la matrice. Puis-je ajouter un identifiant unique au Files
afin qu'il détecte que l'insertion Files
existe dans le tableau, puis le mettre à jour?
@Embedded
public class Files
{
public Files() {
}
public int position;
public String fileName = "";
public String fileHash = "";
public Files(int pos, String fileName, String fileHash) {
this.position = pos;
this.fileName = fileName;
this.fileHash = fileHash;
}
}
Lire d'autres réponses comme morphia-mongodb-accessing, mais il a déjà
@Entity BlogEntry (voir lien) dans un POJO en dehors de mongo. Peut-être que je dois faire la même chose?
Sortez-le, changez-le et enregistrez-le de nouveau?
Cela fonctionne très bien. Morphia devrait le soutenir nativement. Maintenant, nous devons désactiver la validation pour l'utilisation de cet opérateur "$". –