Просто для полноты: пока набор значений не слишком велик, вы могли бы также просто построить строку с выражением, подобным
... WHERE tab.col = ? OR tab.col = ? OR tab.col = ?
, который вы могли бы затем перейти к prepare (), а затем использовать setXXX () в цикле для установки всех значений. Это выглядит yucky, но многие «большие» коммерческие системы обычно делают такие вещи до тех пор, пока они не достигнут ограничений, специфичных для БД, таких как 32 КБ (я думаю, это так) для операторов в Oracle.
Конечно, вы необходимо убедиться в том, что набор никогда не будет необоснованно большим или будет захват ошибок в том случае, если это будет.
На это обсуждение в группе MongoDB.
Альтернативой является реализация эквивалентных запросов / операций с использованием обычного языка запросов MongoDB и API-интерфейса клиента
blockquote>Таким образом, это означало бы писать ваши запросы в клиентской среде (например, Node.js) и выполнять их таким образом. Если они запущены на сервере, подключающемся к локальному хосту, они должны быть довольно быстрыми, хотя, вероятно, не так быстро, как с помощью
eval
.Обоснование устаревания устарело в этом билете. https://jira.mongodb.org/browse/SERVER-17453
Создайте mongodump этой коллекции, сделайте mongorestore в отдельную или новую коллекцию.
Это не остановит чтение / запись или не будет блокировать сбор.
mongodump --db db-name --collection collection-name --archive=collection-name.archive
или сохранить как json работают