我在一個游戲的“經濟”集合中有“銀行賬戶”檔案,格式如下:
_id: ObjectId("62a5c5d741c1059e0f498c2c")
guild: 98525515134318336
user: 595415131438508070
balance: 156
bank: 100
我想按和(該用戶的總凈值)guild
的組合值按降序對所有具有相同值的檔案進行排序。我知道我需要使用我熟悉的 MongoDB 聚合,但我不確定如何按兩個值相加進行排序。balance
bank
我正在使用 MongoDB Java 驅動程式,但以更簡單的 javascript 形式接受建議。
uj5u.com熱心網友回復:
一種選擇是創建一個將兩者相加的新欄位:
db.collection.aggregate([
{
$addFields: {
sum: {$add: ["$balance", "$bank"]}
}
},
{
$sort: {
guild: 1,
sum: -1
}
}
])
看看它在操場上的例子是如何作業的
uj5u.com熱心網友回復:
通過從 ni??mrod serok 轉換 javascript,我能夠找到 MongoDB Java 驅動程式的解決方案!
public AggregateIterable<Economy> getLeaderboard(long guild) {
return database.collection.aggregate(
Arrays.asList(
Aggregates.match(Filters.eq("guild", guild)),
Aggregates.addFields(new Field("sum", Filters.eq("$add", Arrays.asList("$balance", "$bank")))),
Aggregates.sort(Sorts.descending("sum"))
)
);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/490022.html
上一篇:無法向mongodb進行身份驗證