У меня есть коллекция с именем products
, в которой есть документы, содержащие несколько полей, а также подмассив variants
.
Подмассивы variants
имеют несколько полей, в том числе sku
и id
.
Я знаю значение id
, и мне нужно использовать его, чтобы получить значение sku
.
Упрощенная коллекция выглядит так:
[
"_id" => "whatever_id_1",
"field_2" => "some value 1",
"variants" =>
[
"id" => "some_id_123"
"sku" => "SKU-1"
],
[
"id" => "some_id_124"
"sku" => "SKU-2"
],
[
"id" => "some_id_125"
"sku" => "SKU-3"
]
],
[
"_id" => "whatever_id_2",
"field_2" => "some value 2",
"variants" =>
[
"id" => "some_id_126"
"sku" => "SKU-4"
],
[
"id" => "some_id_127"
"sku" => "SKU-5"
],
[
"id" => "some_id_128"
"sku" => "SKU-6"
]
],
[
"_id" => "whatever_id_3",
"field_2" => "some value 3",
"variants" =>
[
"id" => "some_id_129"
"sku" => "SKU-7"
],
[
"id" => "some_id_130"
"sku" => "SKU-8"
],
[
"id" => "some_id_131"
"sku" => "SKU-9"
]
]
Я получаю правильный документ с
// Set item_id
$item_id = 'some_id_127';
// Build 'find product with inventory item id' query
$find_product_with_id_query = [ 'variants' => ['$elemMatch' => ['id' => $item_id] ] ];
// Get the product document to process
$inventory_update_product = $client_products_collection->findOne($find_product_with_id_query);
Это правильно возвращает родительский документ с "_id" => "whatever_id_2"
.
Теперь я знаю, что могу перебрать эти результаты (например, $inventory_update_product['variants'
) и найти значение sku
таким образом.
ВОПРОСЫ
1. Но есть ли способ получить значение sku
с помощью MongoDB?
2. Есть ли какая-то польза от использования MongoDB для этого последнего шага или более эффективно просто использовать PHP for loop, чтобы найти sku
?