Java Mongodb обновление базы данных объекта - PullRequest
0 голосов
/ 12 июня 2019

Я работаю с данными загрузки, которые хранятся в одной коллекции.Данные содержат информацию о дате загрузки в виде целочисленного значения, поэтому я хочу создать один объект в коллекции, который будет содержать все дни, когда были загружены данные.Этот объект courase должен обновляться при каждой загрузке в случае, если данные были записаны в новый день.Если в этот же день уже имеются данные, объект обновлять не нужно.Объект строится следующим образом:

{
"Content" : "UploadDates",
"value" : [123,456]
}

и значение JSONArray должно быть обновлено.Есть ли более элегантный способ, чем взять объект while, объединить массив дат с новыми датами и снова вставить весь объект?

РЕДАКТИРОВАТЬ: Я реализую в Java / Spring 2.1.4 Release и драйвер mongodb 3.8.2

1 Ответ

0 голосов
/ 13 июня 2019

Вы можете использовать операцию обновления $ push , чтобы вставить новое значение в массив.

Например, в оболочке mongo:

> db.test.find()
{
  "_id": 0,
  "value": [
    123,
    456
  ]
}

Обновление документа с помощью $push:

> db.test.update({_id: 0}, {$push: {value: 789}})
WriteResult({
  "nMatched": 1,
  "nUpserted": 0,
  "nModified": 1
})

Новое значение добавляется в конец массива:

> db.test.find()
{
  "_id": 0,
  "value": [
    123,
    456,
    789
  ]
}

Если поле массива не существует, $push создаст поле.

...