Поиск вложенных массивов в MongoDB/PyMongo при использовании агрегации
Я пытаюсь найти ключевое слово внутри массива массивов в документе mongo.
{
"PRODUCT_NAME" : "Truffle Cake",
"TAGS": [
["Cakes", 100],
["Flowers", 100],
]
}
Обычно я делаю что-то подобное, и это срабатывает.
db.collection.find( {"TAGS":{"$elemMatch":{ "$elemMatch": {"$in":['search_text']} } }} )
Но теперь я изменил этот запрос на запрос, основанный на агрегатах, из-за других требований. Я пробовал $filter , $match, но не смог точно воспроизвести вышеуказанный запрос...
Может ли кто-нибудь преобразовать приведенный выше код так, чтобы он мог напрямую работать с агрегатами? (Я использую PyMongo)
$match использует тот же синтаксис запроса, что и язык запросов (find), из документации:
Синтаксис запроса идентичен синтаксису запроса операции чтения;
Это означает, что если у вас есть запрос, который работает в "find", он будет работать и на этапе $match
, например, так:
db.collection.aggregate([
{
$match: {
"TAGS": {
"$elemMatch": {
"$elemMatch": {
"$in": [
"Cakes"
]
}
}
}
}
}
])
Смотрите это в прямом эфире на Mongo Playground