Импортировать json в коллекцию mongodb? - PullRequest
2 голосов
/ 13 января 2020

Я хотел бы импортировать файл. json в коллекцию MongoDB как поле, где импортированные данные могут работать как поддокумент с меткой поля. Это возможно? Я использую Django для своего веб-фреймворка и загрузки файлов.

Сейчас модель данных выглядит следующим образом: Django:

class Trip(models.Model):
    name = models.CharField(max_length = 120)
    file = models.FileField(upload_to = 'trips/files/', null = True, blank = True)

Мне нужен "файл" поле для импорта. json, которое считывает подполя в документе; в понедельник go модель данных будет выглядеть следующим образом, например:

{
    "_id": {
        "$oid": "5e18e9b0593b827d141e9c6d"
    },
    "name": "f"
    "file": {
        "field1": "asdf"
        "field2": 1234
        "field3": {
            "fieldA": "3"
            "fieldB": "876"
        }
    }
}

, где поля в поле «file» находятся в импортируемом файле. json. Очевидно, что настоящий json был бы более изощренным, но это всего лишь простой пример.

Если это возможно, пожалуйста, дайте мне знать, чтобы иметь возможность импортировать эти файлы .jsons и правильно обрабатывать их в Mon go это все, что мне нужно, чтобы получить то, что мне нужно для работы. Спасибо!

1 Ответ

1 голос
/ 15 января 2020

PyMon go очень полезен. Он предлагает функцию insert_one(), которая работает идентично обычной вставке mon go. Ознакомьтесь с документацией здесь . Вам может понадобиться функция, основанная на вашей модели. Вы также должны будете включить требования PyMon go, чтобы использовать это.

Попробуйте:

import pymongo

client = pymongo.MongoClient("localhost:27017")
db = client.your_database #Database
col = db.your_collection #Collection

class Trip(models.Model):
    name = models.CharField(max_length = 120)
    file = models.FileField(upload_to = 'trips/files/', null = True, blank = True)

    def insert_into_collection(self):
        col.insert_one({'uploaded_file':file})

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