Действительно новичок в использовании Mongodb с Morphia и посмотрите много сложных ответов, как это сделать.
Я хочу сделать это просто, если это возможно, и у меня есть @Embedded
Объект с именем
fileObjects
содержит Files
объектов.
Я не могу обновить поля внутри Files
.
Я хочу обновить только одно поле, например String fileHash
.
@Entity
public class BatchData {
@Id private ObjectId id;
@Embedded
public ArrayList<Files> fileObjects = new ArrayList<Files>();
}
UPDATE ..
Читая вики по адресу Morphia Updating не "на самом деле" говорят, как это сделать, только когда массив содержит Integer
, например:
@Embedded
List<Integer> roomNumbers = new ArrayList<Integer>();
Вот что я пока пытаюсь:
mongo.createUpdateOperations(BatchData.class).add("fileObjects", Files, false);
Files
, который этот код вставки уже находится в монго. false
не обнаруживает это и вставляет его в конец массива. Могу ли я добавить уникальный идентификатор к Files
, чтобы он обнаружил, что вставляемый Files
существует в массиве, а затем просто обновил его?
@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;
}
}
Чтение других ответов, таких как morphia-mongodb-accessing , но у него уже есть
@Entity BlogEntry (см. Ссылку) в POJO за пределами Монго. Может быть, я должен сделать то же самое?
Вытащить, заменить и сохранить обратно?