Теперь, когда ваши данные структурированы, с несколькими элементами массива полей, содержащими значения для поиска, невозможно, чтобы один запрос нашел все, что вы хотите. Проблема здесь в массивах. Просто невозможно выполнить поиск во вложенном содержимом полей массива.
Когда у вас есть элементы массива, которые необходимо сопоставить индивидуально с запросами, они должны быть отдельными документами в коллекции. Да, больше операций чтения и записи, но это также означает, что ваши запросы станут возможными. было поле под названием ключевые слова.
companies (collection)
document 1 (doc)
company_name: string field
products (subcollection)
keywords: string array field
С его помощью вы могли затем выполнить запрос группы сбора для всех продуктов во всех компаниях, подобных этой (в JavaScript):
db.collectionGroup("products").where("keywords", "array-contains", keyword)
где keyword
- это слово, которое вы ищете.