У меня есть коллекция driverStores, где у каждого Store есть коллекция Product
{ "_id": ObjectId("61444bad0e945f654c1c4918"), "storeName": "Один",
"listProducts": [ { "_id": ObjectId("61444bc70e945f654c1c491f"), "productName": "Вода", "productPrice": 10 },
{ "_id": ObjectId("61444c050e945f654c1c4927"), "productName": "Молоко", "productPrice": 50 } ] }
{ "_id": ObjectId("61444bba0e945f654c1c491b"), "storeName": "Два",
"listProducts": [ { "_id": ObjectId("61444c110e945f654c1c492a"), "productName": "Чай", "productPrice": 100 },
{ "_id": ObjectId("61444c1a0e945f654c1c4931"), "productName": "Кофе", "productPrice": 200 } ] }
я пытаюсь получить у каждого магазина товар, с максимальной ценой:
db.driverStores.aggregate([ ... {$unwind:"$listProducts" }, ... {$match : { "listProducts.productPrice" : { $ne : 0 } } }, ... {$group : { _id : { storeName : "$storeName"}, ... MAXPRICE_Products : { $max : "$listProducts.productPrice"}, ... $addFields: { Name: {$add: ["$listProducts.productName" ] }} ... }} ... ])
но получаю ошибку: "errmsg": "The field '$addFields' must be an accumulator object"
Как в данном случае можно использовать аккумулятор, чтобы получить название товара с максимальной ценой?
Вопрос задан
более трёх лет назад
139 просмотров