отправка запроса mongodb скриптом python - PullRequest
1 голос
/ 22 апреля 2020

моя структура базы данных в mongodb имеет вид

{
        "_id" : ObjectId("5e9fef05c0228a50befba0d7"),
        "name" : "sanghm",
        "id" : "3456",
        "dep" : {
                "dep1" : "ops",
                "dep2" : "analytics"
        },
        "data" : [
                {
                        "date" : "25-apr-2020",
                        "log" : [

                                {
                                        "machine" : "windows-user1",
                                        "task" : "excel",
                                          "time": "10:00am"
                                }
                                {
                                        "machine" : "windows-user1",
                                        "task" : "email",
                                          "time": "11:00am"
                                }

                        ]
                }
        ]
}

Я хочу написать сценарий python, который продолжает добавлять данные в базу данных, поэтому для пользовательских данных> дата> массив журналов продолжайте добавлять новая запись для каждого пользовательского действия. В оболочке mongodb я могу написать запрос как

db.inventory.update({id:3456},{$push:{'data.$[t].log':{machine:'windows-user1',task:'personal', time:'12:30pm'}}},{arrayFilters:[{"t.date":'25-apr-2020'}]})

, этот запрос работает в оболочке mongodb, но то же самое я хочу отправить через скрипт python для обновления / добавления в журнал ». Я попытался запрос с помощью библиотеки Pymon go, но он дает ошибку

myclient= myclient()
db=myclient['example']
collecton = db['inventory']
recieved = collection.update_one({id:3456},{$push:{'data.$[t].log':{machine:'windows-user1',task:'personal', time:'12:30pm'}}},{arrayFilters:[{"t.date":'25-apr-2020'}]})

любое решение !!! пожалуйста

1 Ответ

0 голосов
/ 22 апреля 2020

Snytax для pymon go немного отличается, попробуйте это:

recieved = collection.update_one(
    {
        "id": 3456
    },
    {
        "$push": {
            'data.$[t].log': {
                "machine": 'windows-user1',
                "task": 'personal',
                "time": '12:30pm'
            },
        }
    },
    array_filters=[
        {"t.date": '25-apr-2020'}
    ]
)

...