Pymon go update_one не работает в цикле for - PullRequest
0 голосов
/ 05 мая 2020

У меня есть эти документы в коллекции:

{'name': 'Document 1', 'filename': 'Document 1', 'extension': 'pdf', 'filepath': '/mnt/Document 1.pdf', 'origin': 'DB'},
{'name': 'Document 1', 'filename': 'Document 1', 'extension': 'txt', 'filepath': '/mnt/Document 1.txt', 'origin': 'DB'},
{'name': 'Document 2', 'filename': 'Document 2', 'extension': 'pdf', 'filepath': '/mnt/Document 2.pdf', 'origin': 'DB'}

Когда я делаю что-то вроде:

query = {'name': 'Document 1', 'extension': 'txt', 'origin': 'DB'}
update = {'$set': {'filepath': '/something/Document 1.txt'}}
document.update_one(
            query, update
            )

, он отлично работает. Но затем у меня есть файл, содержащий:

/house/away/Document 1.pdf
/house/away/Document 1.txt
/house/away/Document 2.pdf

, и я пытаюсь сделать:

mongo_client = MongoClient('localhost', 27017)
print(mongo_client)

db = mongo_client.some_test

document = db.document

file = open('file', 'r')
lines = file.readlines()
for line in lines:
    name = os.path.basename(line).rsplit('.',1)[0]
    extension = os.path.basename(line).split('.')[-1].rstrip('\n')
    new_path = line.rstrip('\n')
    query = {'name': name, 'extension': extension, 'origin': 'DB'}
    update = {'$set': {'filepath': new_path}}
    document.update_one(
        query, update
        )

, это не работает.

Что мне здесь не хватает?

...