Очистка данных с помощью обновлений - Mongodb + Python - PullRequest
0 голосов
/ 05 июня 2018

Я импортировал в Mongodb, но не смог очистить данные в Python.Пожалуйста, смотрите ниже вопрос и сценарий.Мне нужен ответ из сценариев 1 и 2


  • , импортировать его в MongoDB, очистить данные в Python и обновить MongoDB очищенными данными.В частности, вы будете использовать набор данных людей, где некоторые поля дня рождения выглядят так:

    { ... "birthday": ISODate("2011-03-17T11:21:36Z"), ... }

  • А другие поля дня рождения выглядят так:

    { ... "birthday": "Thursday, March 17, 2011 at 7:21:36 AM", ... }

  • MongoDB изначально поддерживает тип данных Date через BSON.Этот тип данных используется в первом примере, но простая строка используется во втором примере.В этой оценке вы заполняете прилагаемую записную книжку, чтобы написать сценарий исправления, в котором все поле дня рождения документа становится датой.

  • Загрузите записную книжку и набор данных в каталог записной книжки.После того, как вы запустили записную книжку и обновили URI подключения в третьей ячейке, продолжайте проходить по этим ячейкам, пока не достигнете пятой ячейки, где вы импортируете набор данных.Это может занять до 10 минут в зависимости от скорости вашего интернет-соединения и вычислительной мощности вашего компьютера.

  • После проверки того, что все документы были успешно вставлены в ваш кластер, вынапишу запрос в 7-й ячейке, чтобы найти все документы, которые используют строку для поля дня рождения.

  • Чтобы проверить ваше понимание первой части этой оценки, сколькодокументы имели строковое значение для поля дня рождения (вывод ячейки 8)?

Script1

  • Заменить YYYY запросом на людей-Rraw Collection, которая будет возвращать курсор только с

  • документами, где полем дня рождения является строка

  • people_with_string_birthdays = YYYY

  • Это ответ, подтверждающий, что вы завершили лабораторную работу:

    people_with_string_birthdays.count()

Script2

updates = []
# Again, we're updating several thousand documents, so this will take a little while
for person in people_with_string_birthdays:
    # Pymongo converts datetime objects into BSON Dates. The dateparser.parse function 
    # returns a datetime object, so we can simply do the following to update the field
    # properly. Replace ZZZZ with the correct update operator
    updates.append(UpdateOne(
        {"_id": person["_id"]}, 
        {ZZZZ: { "birthday": dateparser.parse(person["birthday"]) } }
    ))
    count += 1

    if count == batch_size:
        people_raw.bulk_write(updates)
        updates = []

    count = 0

if updates:         
    people_raw.bulk_write(updates)
    count = 0

# If everything went well this should be zero
people_with_string_birthdays.count()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...