我有兩個集合和它們之間的多對一關系:
產品:
"_id" : ObjectId("61cc81c9585946c3b44f24411"),
"name" : "some random name",
"price" : 100,
"description" : "description",
"category_id" : ObjectId("61cc8100585946c3b44f2317d")
類別:
{
"_id" : ObjectId("61cc8100585946c3b44f2317d"),
"description" : "Category description",
"name" : "Electronics"
}
我想輸出每個類別的最高產品價格:
db.product.aggregate([
{ "$group": {
"_id": "$category_id",
"max": { "$max": "$price"}
}}
])
這很好用,因為它向我列印了以下內容:
{ "_id" : ObjectId("61cc80fb585946c3b44f697c"), "max" : 62}
{ "_id" : ObjectId("61cc8100585946c3b44f697d"), "max" : 100}
但是有沒有辦法從類別中獲取“名稱”而不是它的物件 ID?
我知道在 SQL 中你會按 category_name 分組,但它似乎在這里不起作用。
uj5u.com熱心網友回復:
正如@prasad 所建議的那樣,您應該在$lookup舞臺之后使用$group舞臺。
db.product.aggregate([
{
"$group": {
"_id": "$category_id",
"max": {
"$max": "$price"
}
}
},
{
"$lookup": {
"from": "category",
"localField": "_id",
"foreignField": "_id",
"as": "categoryName",
}
},
{
"$set": {
"categoryName": {
"$arrayElemAt": [
"$categoryName.name",
0
]
}
}
}
])
Mongo 游樂場示例
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/399226.html
