Я пытаюсь вставить документы в MongoDB, но я хочу иметь только уникальные документы и всякий раз, когда сталкиваюсь с дублирующимся документом, просто игнорируйте его, если он уже существует и переходит к следующему. Я использую следующий код, но, видимо, он не работает.Вставка документов в MongoDB и игнорирование дубликатов документов
ответ
Если вы действительно хотите игнорировать эти, вероятно, лучше всего сделать это в коде, хотя это может быть не так легко в среде с несколькими клиентами.
Флаг dropDups
является параметром индекса только, поэтому он удаляет дубликаты, которые он находит при создании индекса. После этого флаг будет игнорироваться для вставок, потому что это даже не параметр индекса.
Лучшим способом, хотя и не совсем поведением, которое вы ищете, является использование upserts, то есть операций, которые вставляют документ, если он еще не представлен, и обновляют его, если ранее был обнаружен документ. Преимущество состоит в том, что это идемпотентная операция (стратегия игнорирования которой отсутствует).
Так что я использовал следующий код, но я вставляю вставку в try {} и catch {continue}. Это решило проблему.
Это очень хаки, в лучшем случае ... Неоднократно ломающиеся исключения могут быть несколько дорогим качеством. Кроме того, он будет игнорировать все * другие * ошибки, которые могли произойти. Наконец, вам может потребоваться больше одной простой вставки в будущем, поэтому вы будете собирать все больше и больше обновлений в блоках catch/ignore, чтобы вся база кода заражалась взломом ... – mnemosyn
- 1. Count игнорирование дубликатов документов
- 2. MongoDB: удаление дубликатов документов с помощью массивов
- 3. MongoDB - Поиск дубликатов документов нескольких ключей
- 4. Проверка дубликатов документов и аналогичных документов в приложении управления документами
- 5. Solr Индексирование дубликатов документов
- 6. Поиск дубликатов документов
- 7. Сравнение документов в MongoDB
- 8. Обновление документов в MongoDB
- 9. Вставка документов в MongoDB с использованием Node.js и mongoshell
- 10. Node.js, MongoDB - Вставка/обновление нескольких документов и отправка одного ответа
- 11. MongoDB обновление/вставка документов и Приращение согласованный элемент массива
- 12. Вставка XML-документов в orientdb
- 13. Вставка документов json в DocumentDB
- 14. удаление дубликатов документов из Topdocs
- 15. MongoDB Совокупность документов 120M
- 16. MongoDB - большое количество документов
- 17. Архивирование старых документов mongodb
- 18. Массив встроенных документов - MongoDB
- 19. Оптимизация хранения документов MongoDB
- 20. MongoDB - поиск вспомогательных документов
- 21. Практические примеры документов MongoDB
- 22. MongoDB коллекции документов formtting
- 23. Получение документов от MongoDB
- 24. объединение двух MongoDB документов
- 25. Поиск вложенных документов MongoDB
- 26. Вставка нескольких документов в mongodb одним звонком в Meteor
- 27. Запрос MongoDB для удаления дубликатов документов из коллекции
- 28. Вставка нескольких документов в MongoDB Обязывая уникальный индекс
- 29. Вставка нескольких документов в MongoDB с помощью Mongoskin
- 30. автоматическое удаление документов в mongodb
Но C# не поддерживает upsert.Does? – Eager
Конечно. Драйвер C# поддерживает все функции MongoDB. Существует даже вспомогательный метод, Save(), см. Http://docs.mongodb.org/ecosystem/tutorial/use-csharp-driver/#save-tdocument-method – mnemosyn
Я читаю файл CSV и разбираю его tp Bson document , В моем случае, как я могу использовать upsert? – Eager