我正在嘗試解決一個問題。我想撰寫一個查詢,在我的檔案中找到一個檔案,其中一個大于陣列中列 A 和 B 的總和。我在這里寫一個例子。我是 MongoDB 的新手,我搜索了很多,但找不到我的解決方案。那么有人可以幫我解決這個問題嗎?這是我的示例檔案:
document1:
{
"_id" : "1",
"array": [
{
"user": "1",
"A": 2,
"B": 0
},
{
"user": "2",
"A": 3,
"B": 1},
{
"user": "3",
"A": 0,
"B": 5
}
]
}
和檔案 2:
{
"_id" : "2",
"array": [
{
"user": "4",
"A": 1,
"B": 1
},
{
"user": "5",
"A": 2,
"B": 2
}
]
}
例如,檔案 1 中陣列的所有元素中 A 和 B 的總和為 11,檔案 2 中陣列元素中 A 和 B 的總和為 6。所以我想獲取檔案 1 用于輸出,因為它是將所有元素中的所有 A 和 B 相加后大于 2。
uj5u.com熱心網友回復:
你可以試試這個查詢:
total創建一個名為(或您想要的任何名稱)和$add值的輔助欄位。這添加$sum了陣列。這意味著在這里您將 A 和 B 中的所有值相加。- 然后按輔助欄位排序,得到最大的第一個位置
$limit只有一個(最大的)- 并且
$project不輸出輔助欄位。
db.collection.aggregate([
{
"$addFields": {
"total": {
"$add": [
{
"$sum": "$array.A"
},
{
"$sum": "$array.B"
}
]
}
}
},
{
"$sort": {
"total": -1
}
},
{
"$limit": 1
},
{
"$project": {
"total": 0
}
}
])
這里的例子
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/422859.html
標籤:
上一篇:如何替換mongo中的所有檔案?
