Поиск вложенных массивов в 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

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