170 похожих чатов

Привет Вопрос по mongodb Храню в коллекции список элементов Хочу сравнить список элементов

в оперативной памяти со списком в БД
(и найти те, которые есть в памяти и нет в БД)

Как это правильнее сделать?
Просто выгрузить все элементы из БД? И выполнить сравнение на стороне Питона?
Или можно как-то выполнить сравнение списков на стороне Монги?

Элементов - несколько тысяч, до 10к

9 ответов

10 просмотров

.find(field_name: {'$in': [1, 2, 3]})

Ilya- Автор вопроса
denis
.find(field_name: {'$in': [1, 2, 3]})

если я в $in передам список из 5к элементов, это ок будет?

Ilya
если я в $in передам список из 5к элементов, это о...

если не ок, что мешает сделать по кускам?

Ilya- Автор вопроса

ну попробуй, скорее всего 10к это нормально вообще почти всегда стоит делать по максимуму на стороне бд

Ilya- Автор вопроса
denis
ну попробуй, скорее всего 10к это нормально вообще...

есть список А в оперативной памяти (переменной) и список B в БД как найти элементы, которые есть в A, но нет B? найти пересечение A и B (запросом к БД) и потом вычесть это пересечение из A? (уже Питоном) все равно придется на стороне Питона часть расчетов проводить?

Тебе в любом случае надо будет вычитать все документы в базе. А вот заставлять монгу каждый документ сравнивать со списком на 10к элементов - это херовая идея. Проще одним запросом вычитывать документы из базы (используй projection, что бы не доставать все поля, а только нужные). Вычитывать как итерататор, не надо превращать результат в список. Исходный список в памяти превращаешь в set. В теле цикла удаляешь из set-a элемент полученный из базы. По завершению цикла в set-е останутся те элементы, которых нет в базе. Примерно так: source = set(source_list) for doc in collection.find({...}, projection={'value': 1}): source.remove(doc['value'])

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта