我正在嘗試查詢檔案中的特定欄位并按其中一個欄位對它們進行排序,但是,引擎似乎完全忽略了排序。
我使用查詢:
db.symbols.find({_id:'AAPL'}, {'income_statement.annual.totalRevenue':1,'income_statement.annual.fiscalDateEnding':1}).sort({'income_statement.annual.totalRevenue': 1})
這是輸出:
[
{
_id: 'AAPL',
income_statement: {
annual: [
{
fiscalDateEnding: '2021-09-30',
totalRevenue: '363172000000'
},
{
fiscalDateEnding: '2020-09-30',
totalRevenue: '271642000000'
},
{
fiscalDateEnding: '2019-09-30',
totalRevenue: '256598000000'
},
{
fiscalDateEnding: '2018-09-30',
totalRevenue: '265595000000'
},
{
fiscalDateEnding: '2017-09-30',
totalRevenue: '229234000000'
}
]
}
}
]
我希望條目按會計日期結束排序,從 2017-09-30 升序開始。但是,即使我使用 -1 進行排序,順序也是固定的。
有任何想法嗎?
uj5u.com熱心網友回復:
您使用的排序用于對結果集中的檔案進行排序。這與檔案中陣列元素的順序不同。
對于您的情況,如果您使用的是較新版本的 MongoDB(5.2 ),則可以使用$sortArray。
db.symbols.aggregate([
{
$project: {
_id: 1,
annual: {
$sortArray: {
input: "$income_statement.annual",
sortBy: {
fiscalDateEnding: 1
}
}
}
}
}
])
如果您使用的是舊版本的 MongoDB,您可以執行以下操作來執行排序。
db.collection.aggregate([
{
"$unwind": "$income_statement.annual"
},
{
$sort: {
"income_statement.annual.fiscalDateEnding": 1
}
},
{
$group: {
_id: "$_id",
annual: {
$push: "$income_statement.annual"
}
}
},
{
"$project": {
_id: 1,
income_statement: {
annual: "$annual"
}
}
}
])
這是Mongo Playground供您參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/453628.html
上一篇:洗掉id表單嵌入檔案
