Создать коллекцию mongoDB для каждого - PullRequest
0 голосов
/ 09 ноября 2018

Я хочу создать коллекцию в MongoDB на основе идентификатора. Каждый идентификатор должен получить свою собственную коллекцию. Я попытался добавить идентификатор в collection = db.id, чтобы создать новую коллекцию, если ее еще нет, но она не работает. Это просто создает коллекцию с именем id.

 import pymongo as pm

    list = [{'id':'1', 'fruit':'apple', 'drink':'juice'},
             {'id':'2', 'fruit':'pear', 'drink':'coffee'},
             {'id':'2', 'fruit':'banana', 'drink':'milk'}, 
             {'id':'2', 'fruit':'banana', 'drink':'fanta'},
             {'id':'3', 'fruit':'mango', 'drink':'tea'},
             {'id':'1', 'fruit':'kiwi', 'drink':'cola'}]


    for item in list:
        id = item['id']

        client = pm.MongoClient("X")
        db = client.fruit_n_drink
        collection = db.id
        x = collection.insert_one(w)

1 Ответ

0 голосов
/ 09 ноября 2018

db.id похоже на db['id']. Вы хотите использовать db[id].

Тем не менее, он также потерпит неудачу, потому что ваши идентификаторы не будут работать с ограничениями именования MongoDB, описанными в https://docs.mongodb.com/manual/reference/limits/#Restriction-on-Collection-Names

Редактировать

Читая более внимательно, я думаю, что мое предыдущее утверждение о документации неверно: похоже, не начинать с символа цифры - это просто рекомендация, а не ограничение.

From pymongo

...