Я пытаюсь обновить вложенный массив в моем документе mongodb, и я не могу понять, как $push
использовать переменные в таком вложенном массиве. документы говорят, что используют точечную запись, но я не могу использовать это, так как у меня есть различные key
и node_id
, по которым мне нужно $push
for key, value in docs.items():
print(f'Key: {key} Value: {value}')
for node_id, timestamp in value.items():
result = await db[collection].update_one({'user_id': user_id, 'date': date}, {'$push':{"key.node_id": timestamp}}, upsert=True)
return result.modified_count
value
вложенный словарь внутри docs
. Используя приведенный выше код, просто обновите документ с помощью str 'key'
и 'node_id'
. Как мне получить доступ к переменным с помощью точечной нотации в этом случае?
ОБНОВЛЕНИЕ:
Это образец документа, который я пытаюсь создать
{
"date": "18/04/2020",
"user_id": "my_user",
"standing": [
{ "2": [1582805181, 1582805183] },
{ "3": [1582805181, 1582805183] }
],
"sitting": [
{ "2": [1582805181, 1582805183] },
{ "3": [1582805181, 1582805183] }
],
"walking": [
{ "2": [1582805181, 1582805183] },
{ "3": [1582805181, 1582805183] }
]
}
Обновление 2:
key
будет одним из трех сидящих, стоящих, идущих. value
- это вложенный словарь в документах, ключи которого могут быть 2 или 3 - в этом случае node_id
, а timestamp
будет unix отметкой времени из 10 цифр.