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' }
]);