4 回答

TA貢獻2012條經驗 獲得超12個贊
嘗試下面的代碼
findOptions := options.Find()
// Sort by `price` field descending
findOptions.SetSort(bson.D{{"price", -1}})
db.Collection("products").Find(nil, bson.D{}, findOptions)

TA貢獻1835條經驗 獲得超7個贊
我無法將 ?? 傳遞bson.D給選項(這導致了錯誤)。但這段代碼對我有用:
queryOptions := options.FindOneOptions{}
queryOptions.SetSort(bson.D{{"priority", -1}, {"last_error_time", 1}})
sResult := collection.FindOne(context.TODO(), queryFilter, &queryOptions)

TA貢獻2065條經驗 獲得超14個贊
我在嘗試解決相關問題時遇到的一些注釋:
如果嘗試按多個字段排序,請務必使用 bson.D 而不是 bson.M,因為 bson.M 不保留順序。
如果嘗試以編程方式構建多個排序字段,請嘗試
將 bson.E 附加到 bson.D正如 dassum 所做的那樣,按照mongo 文檔的
建議傳遞 bson.M{} 以獲得空過濾器
應用:
sort := bson.D{}
for _, example := examples {
? ? sort = append(sort, bson.E{example, 1})
}
findOptions.SetSort(sort)
db.Collection("products").Find(nil, bson.D{}, findOptions)

TA貢獻1842條經驗 獲得超22個贊
還有一點需要注意,確保字段名稱的映射正確。就我而言,我試圖對字段進行排序createdAt
,但在意識到我的 mongodb 字段被映射為createdat
.
queryOptions.SetSort(bson.D{{"createdat", -1}
- 4 回答
- 0 關注
- 190 瀏覽
添加回答
舉報