我有這樣的收藏
| 用戶 | 接收者 | 讀取 |
|---|---|---|
| 一種 | 乙 | 錯誤的 |
| 乙 | 一種 | 錯誤的 |
| 一種 | 乙 | 錯誤的 |
| 一種 | C | 錯誤的 |
| C | 一種 | 錯誤的 |
如何按用戶和接收器對其進行分組以獲得這樣的結果
| 組合場 | 留言 |
|---|---|
| AB或BA | 3 |
| AC或CA | 2 |
試過這個
$group: {
_id: {$or: [{userId: "$recipientId", recipientId: "$userId"}, {userId: "$userId", recipientId: "$recipientId"}]},
messages: {$sum: {$cond: [{$eq: ['$isRead', false]}, 1, 0]}} // count
}
uj5u.com熱心網友回復:
您可以將$group鍵設定$setUnion為User和Receiver欄位。
db.collection.aggregate([
{
$group: {
_id: {
"$setUnion": [
[
"$User"
],
[
"$Receiver"
]
]
},
"Messages": {
$sum: {
"$cond": {
"if": {
$not: "$IsRead"
},
"then": 1,
"else": 0
}
}
}
}
}
])
這是Mongo 游樂場供您參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/354252.html
