insert_many не работает при добавлении еще одного случая - PullRequest
0 голосов
/ 13 мая 2019

Я использовал следующий код для вставки tab0011.json в portal_db.acs:

from pymongo import MongoClient
import json

client = MongoClient()
db = client.portal_db

db.acs.drop()
acs = db.acs

data_acs = json.load(open('/vagrant/data/tab0011.json', 'r'))

result_acs = acs.insert_many(data_acs)

В коде сохранена корректность данных tab0011.json. Однако я попробовал следующий код, чтобы вставить tab0011.json в portal_db.acs и tab0007.json в portal_db.tab0007. Обе коллекции были созданы, но внутри их нет, т. Е. Пусто:

from pymongo import MongoClient
import json

client = MongoClient()
db = client.portal_db

db.acs.drop()
acs = db.acs

db.tab0007.drop()
tab0007 = db.tab0007

data_acs = json.load(open('/vagrant/data/tab0011.json', 'r'))
data_tab0007 = json.load(open('/vagrant/data/tab0007.json', 'r'))

result_acs = acs.insert_many(data_acs)
result_tab0007 = tab0007.insert_many(data_tab0007)

Не совсем уверен, почему.

1 Ответ

1 голос
/ 14 мая 2019

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

Может быть, вы можете попробовать сделать это следующим образом:

from pymongo import MongoClient
import json

client = MongoClient(host="localhost", port=27017)
db = client["portal_db"]

acs = db.get_collection("acs")

tab0007 = db.get_collection("tab0007")

db.drop_collection("acs")
db.drop_collection("tab0007")

data_acs = json.load(open('/vagrant/data/tab0011.json', 'r'))
data_tab0007 = json.load(open('/vagrant/data/tab0007.json', 'r'))

acs_inserts = acs.insert_many(data_acs)
tab_inserts = tab0007.insert_many(data_tab0007)

print(acs_insert.inserted_ids)
print(tab_inserts.inserted_ids)

В последних двух строках будут напечатаны ObjectIds вставленных документов.

...