Вызов скрипта в mongodb с db.eval [duplicate]

Просто для полноты: пока набор значений не слишком велик, вы могли бы также просто построить строку с выражением, подобным

... WHERE tab.col = ? OR tab.col = ? OR tab.col = ?

, который вы могли бы затем перейти к prepare (), а затем использовать setXXX () в цикле для установки всех значений. Это выглядит yucky, но многие «большие» коммерческие системы обычно делают такие вещи до тех пор, пока они не достигнут ограничений, специфичных для БД, таких как 32 КБ (я думаю, это так) для операторов в Oracle.

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

16
задан Feng Yu 27 May 2015 в 05:42
поделиться

2 ответа

На это обсуждение в группе MongoDB.

Альтернативой является реализация эквивалентных запросов / операций с использованием обычного языка запросов MongoDB и API-интерфейса клиента

Таким образом, это означало бы писать ваши запросы в клиентской среде (например, Node.js) и выполнять их таким образом. Если они запущены на сервере, подключающемся к локальному хосту, они должны быть довольно быстрыми, хотя, вероятно, не так быстро, как с помощью eval.

Обоснование устаревания устарело в этом билете. https://jira.mongodb.org/browse/SERVER-17453

3
ответ дан Shane Stillwell 16 August 2018 в 10:40
поделиться
  • 1
    Обратите внимание, что Node.js не может быть хорошим решением, если вы собираетесь использовать распределенную базу данных. То же самое происходит с Eval (). Хорошая денормализация является лучшей в этом случае. – Adrian Lopez 26 September 2015 в 02:36

Создайте mongodump этой коллекции, сделайте mongorestore в отдельную или новую коллекцию.

Это не остановит чтение / запись или не будет блокировать сбор.

mongodump --db db-name --collection collection-name --archive=collection-name.archive

или сохранить как json работают

0
ответ дан shijin 16 August 2018 в 10:40
поделиться
Другие вопросы по тегам:

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