В mongodb(pymongo) как я могу создать только недостающий путь во вложенном документе

Я использую django и mongoDB, соединенные Pymongo. Я создал коллекцию пользователей, в которой внутри каждого пользователя есть детали, и календарь, когда пользователь впервые регистрируется, календарь является пустым массивом (может быть изменен при необходимости), в календаре будет список лет, внутри каждого года список месяцев, внутри каждого месяца будет список дней, и в каждом дне список событий. И мне нужно, чтобы когда пользователь хочет добавить событие к определенной дате, он добавлял его в правильный путь, то есть если указанный год уже существует, он вставит событие в него, и так далее для месяца и дня. Но если год еще не существует, он создаст нужный путь.

Все, что я пробовал, либо не обновляется вообще, либо добавляет дубликаты и игнорирует уже созданные данные.

Есть ли у кого-нибудь решение для этого случая?

И если это не правильная архитектура для базы данных mongo, не стесняйтесь улучшить ее.

Большое спасибо.

Например, я пытался

users = db["users"]
users.update_one({"_id": user}, {"$addToSet": {"year": year, "months": [{"month": month, "days": [{"day": day, "events": [new_event]}]}]}}}, upsert=True)

Но он добавляет новый год каждый раз, когда я добавляю событие, даже если год уже существует

Вернуться на верх