powered by simpleCommunicator - 2.0.28     © 2024 Programmizd 02
Map
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / MongoDB недопостить повторений
5 сообщений из 5, страница 1 из 1
MongoDB недопостить повторений
    #39844685
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возник вопрос.

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

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

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

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
5 сообщений из 5, страница 1 из 1
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / MongoDB недопостить повторений
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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