Удалить документы из коллекции mongodb и оставить одно на два условия - PullRequest
0 голосов
/ 16 марта 2020

У меня есть коллекция о сигналах транспортных средств. За день и за транспортное средство у меня много документов. Чего я хочу, так это оставлять только один документ в день и на транспортное средство, главным образом, последний в день. Есть варианты, чтобы решить эту проблему?

Структура моей коллекции примерно такая:

{
  "_id": "5e067c1b6c7d95203754a5db",
  "account": {
    "account_id": 7001
  },
  "date": "2019-12-18",
  "carrier": "CARRIERABC",
  "num_plate": "JHGF78",
  "vehicle_type": 3,
  "provider": "PROVIDERXYZ",
  "MIN_CONNECTION": "2019-12-18T00:00:04.000Z",
  "MAX_CONNECTION": "2019-12-18T23:59:56.000Z",
  "AVG": 96.248069842024
}

1 Ответ

0 голосов
/ 16 марта 2020

(я удалил все остальные свойства для простоты)

Представим, что вам нужна только одна и последняя запись на дату и num_plate.

db.entries.update({
  "date": "2019-12-18",
  "num_plate": "JHGF78",
}, {
  "date": "2019-12-18",
  "num_plate": "JHGF78",
  "VALUE" : 1
}, {
  upsert: true
});

db.entries.update({
  "date": "2019-12-18",
  "num_plate": "JHGF78",
}, {
  "date": "2019-12-18",
  "num_plate": "JHGF78",
  "VALUE":  2
}, {
  upsert: true
});

db.entries.update({
  "date": "2019-12-18",
  "num_plate": "JHGF78",
}, {
  "date": "2019-12-18",
  "num_plate": "JHGF78",
  "VALUE": 3
}, {
  upsert: true
});

Если вы выполните указанные выше запросы, у вас будет только последняя запись для этого транспортного средства, потому что ваши критерии соответствия там.

...