У меня есть коллекция в MongoDB CatalogItems
. Каждый CatalogItem
содержит product
с массивом metafields
.
. В этих метаполях есть 2 поля: Brand_ID
и Article_No
Пример документа CatalogItem:
CatalogItem = {
product: {
metafields: [
{
key: "Brand_ID",
value: "317"
},
{
key: "Article_No",
value: "48630"
}
]
}
}
У меня есть массив фильтров, который используется для сопоставления документов CatalogItems на основе этих метаполей
массив фильтров
filter = [
{ brandId: '317', articleId: '48630' },
{ brandId: '257', articleId: 'ZSA04036' }
]
Я хочу вернуть все CatalogItems которые соответствуют любой из точных комбинаций в фильтре. Например, чтобы вернуть указанный CatalogItem, я в настоящее время использую этот запрос
// Checks for { brandId: '317', articleId: '48630' }
query = {
$and: [
{ "product.metafields": { $elemMatch: { key: "Brand_ID", value: filter[0].brandId } } },
{ "product.metafields": { $elemMatch: { key: "Article_No", value: filter[0].articleId } } },
]
}
Проблема, с которой я столкнулся, заключается в том, что для того, чтобы просмотреть все элементы фильтра, мне нужно увеличить индекс фильтра и повторно выполнить запрос ,
Например, при поиске второго индекса фильтра мне пришлось бы изменить filter[0].brandId
на filter[1].brandId
Есть ли в пн go способ выполнить запрос, используя вместо этого предопределенный массив объектов? повторного выполнения запроса несколько раз?