Мне нужна помощь с фильтрацией mongoengine, пожалуйста. Я пытаюсь отфильтровать 2 поля во встроенных документах. Я хочу, чтобы оба совпадения находились в одном и том же документе, но я не могу понять, как их так содержать.
пример данных:
{
"_id" : "1",
"active" : true,
"booking" : [
{
"date" : 1,
"status" : true
}
]
}
{
"_id" : "2",
"active" : true,
"booking" : [
{
"date" : 1,
"status" : false
},
{
"date" : 2,
"status" : true
}
]
}
Я хочу запросить day=1 & status=true
и получить только #1 как результат. Однако этот запрос вернул бы и # 1, и # 2, поскольку в документах могут существовать как день, так и статус.
docs.objects.filter(
Q(active=True) & Q(booking__date=1) & Q(booking__status=True))
Я пробовал несколько разных вещей, но они дают результат намного дальше, чем я ожидал. Такие как эти, которые возвращают пустое.
match = {"$match": {
"booking.date": 1,
"booking.status": True
}}
objects = docs.objects.aggregate(match)
или
match = {"$match": {
"$and": [
{
"booking.date": 1,
"booking.status": True
}
]
}}
Может кто-нибудь посоветовать, пожалуйста?