Mongodb: db.collection.copyTo() и eval() устарели. Какие альтернативы?

Я нахожу, что db.collection.copyTo() и eval ( ) устарели с 3,0. Но я не нахожу, что может быть вместо этого.

Какие альтернативы?

Ответы

Ответ 1

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

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

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

В этом билете указано обоснование устаревших существ. https://jira.mongodb.org/browse/SERVER-17453

Ответ 2

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

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

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

или сохранить как JSON оба работает

Если сохранено как архив, восстановить

mongorestore --db db-name --collection collection-name --archive=collection-name.archive

Ответ 3

Для серверного решения вы можете использовать агрегацию...

db.getCollection('source')
    .aggregate([
        { $out: 'destination' }
    ]);