MongoDB: массовое изменение всех типов полей в python - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть тонна документов (около 10 миллионов), и мне нужно изменить тип их поля.Обычная функция forEach (просто перебирая каждое значение), кажется, работает вечно и явно не жизнеспособна в те сроки, которые у меня есть (в основном это заняло всю ночь для одного из четырех обновлений)

Я слышал, что массовые записиможет быть в состоянии сделать это, но я получаю смешанные сообщения.Я видел на этом сайте запутанный ответ, например, в котором говорится, что для этого не существует письменной функции (вам придется обойтись), другие говорят, что это можно сделать с помощью обновлений в Python, используя pymongo.

Мне было интересно, есть ли более быстрый способ массового изменения типа поля (string-> double, string -> int) с использованием python?Я также могу работать с консоли, но я нахожу там еще меньше решений.

Спасибо

1 Ответ

0 голосов
/ 03 декабря 2018

Вы можете попробовать использовать запрос агрегации в оболочке mongo

Что-то вроде

db.your_collection.aggregate([
  {
    $addFields: {
      field1: {
        $convert: {
          input: "$field1",
          to: "string"
        }
      }
    }
  },
  { $out: "your_collection" }
])

Подробнее здесь https://docs.mongodb.com/manual/reference/operator/aggregation/convert/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...