Гость
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / MongoDB недопостить повторений / 5 сообщений из 5, страница 1 из 1
02.08.2019, 15:35
    #39844685
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MongoDB недопостить повторений
Возник вопрос.

Предположим мне надо сохранять данные с уникальным полем.

Кпримеру катировки валют. нужно сохранить только одну запись для каждой даты.
но как я могу запретить добавление второй записи для одной и тойже даты??
...
Рейтинг: 0 / 0
03.08.2019, 10:33
    #39844902
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MongoDB недопостить повторений
Areostar,

создать по полю даты уникальный индекс
...
Рейтинг: 0 / 0
03.08.2019, 10:36
    #39844903
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MongoDB недопостить повторений
И сохранять через update c опцией: { upsert: true }
...
Рейтинг: 0 / 0
06.08.2019, 14:04
    #39845861
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MongoDB недопостить повторений
Ссылку на пример можно? Если вас не затруднит
...
Рейтинг: 0 / 0
07.08.2019, 09:14
    #39846171
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MongoDB недопостить повторений
Примеры есть в документации:

https://docs.mongodb.com/manual/core/index-unique/
https://docs.mongodb.com/manual/reference/method/db.collection.update/

к примеру Европейский Центральный Банк выдаёт информацию о курсах валют в ледующем виде:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  {
    base: "EUR",
    date: "2018-04-08",
    rates: {
      "CAD": 1.565,
      "CHF": 1.1798,
      "GBP": 0.87295,
      "SEK": 10.2983,
      "EUR": 1.092,
      "USD": 1.2234,
      ...
    }
  }


следовательно будет такой индекс:
Код: javascript
1.
db.exchangerates.createIndex({ base: 1, date: 1 }, { unique: true })


и такой апдейт:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
db.exchangerates.update(
  { base: "EUR", date: "2019-08-06" },
  {
    base: "EUR",
    date: "2019-08-06",
    rates: {
      "CAD": 1.4785,
      "HKD": 8.767,
      "ISK": 136.5,
      "PHP": 58.269,
      "DKK": 7.4644,
      "HUF": 325.35,
      ...
    }
  },
  { upsert: true }
)
...
Рейтинг: 0 / 0
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / MongoDB недопостить повторений / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]