我需要根據價格對檔案進行排序,而價格是一個陣列,而我們根據鍵 PRICE_A、PRICE_B 或 PRICE_C 對價格進行排序。樣本資料:
[
{
"_id": 1,
"price": [
{
"PRICE_A": 3098.67
},
{
"PRICE_B": 3166.67
},
{
"PRICE_C": 3800
}
]
},
{
"_id": 2,
"price": [
{
"PRICE_A": 679.6
},
{
"PRICE_B": 781.6
},
{
"PRICE_C": 938
}
]
}
]
預期輸出:按升序 PRICE_A
[
{
"_id":2,
"price":[
{
"PRICE_A":679.6
},
{
"PRICE_B":781.6
},
{
"PRICE_C":938
}
]
},
{
"_id":1,
"price":[
{
"PRICE_A":3098.67
},
{
"PRICE_B":3166.67
},
{
"PRICE_C":3800
}
]
}
]
我正在使用此查詢 - https://mongoplayground.net/p/Ajaw4SFVpzg
uj5u.com熱心網友回復:
沒有直接的方法可以做到這一點,您需要改進架構設計,否則此查詢會影響性能,
$addFields創建新的自定義欄位p$arrayElemAt通過傳遞它的鍵名來獲得第一個價格值,在這里你必須傳遞你的動態價格鍵名$sort按p升序排列$unset洗掉p密鑰,因為現在不需要它
{
"$addFields": {
"p": { "$arrayElemAt": ["$price.PRICE_A", 0] }
}
},
{ "$sort": { "p": 1 } },
{ "$unset": "p" }
操場
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/335692.html
標籤:MongoDB 猫鼬 mongodb-查询 聚合框架 spring-data-mongodb
