Конвертировать тип поля MongoDB при импорте

У меня более 5 миллионов JSON-объектов, хранящихся в сотнях текстовых файлов, которые я собираюсь импортировать в базу данных Mongo. Я создал пакетный файл Windows, чтобы перебирать каталоги, в которых хранятся файлы, и импортировать их с помощью mongoimport. Это работает, как и ожидалось, но одно из полей в объекте JSON является значением с плавающей запятой, которое по какой-то причине было сохранено в виде строки.

Есть ли способ конвертировать его тип поля при импорте данных? Я попытался преобразовать поле в число после этого, но это очень медленно.

{
    "id": 1234,
    "user": "user1",
    "ip": "127.0.0.1",
    "time": "111111111111"
}

1 ответ

Вы можете сделать что-то вроде этого, если хотите преобразовать строку в int дляfieldв библиотеках Python и pymongo:

      client = MongoClient("some_url")
db = client["db"]
collection = db["name_of_collection"]
path_to_data = 'data.json'
with open(path_data) as file:
    file_data = json.load(file)
                
    if isinstance(file_data, list):
        for document in file_data:
            document["field"] = int(document["field"])
        collection.insert_many(file_data)
Другие вопросы по тегам