這是我現在擁有的檔案:
{
_id: ObjectId("62464e3e75c6d843a338993b"),
Name: 'The Team',
Members: [
{ User: Long("699724278526580847"), Rank: 3 },
{ User: Long("937398909418999808"), Rank: 4 },
{ User: Long("829765893287562113"), Rank: 1 },
{ User: Long("090119389582045756"), Rank: 1 },
{ User: Long("772474927459011034"), Rank: 1 },
]
}
我想獲取通過輸入選擇的用戶的“排名”值,對于這個例子,假設執行命令的人選擇了 ID 為“699724278526580847”的用戶,我將如何查詢并獲得該用戶的排名用戶回傳?在 pymongo 中是否有可能只獲得該用戶排名的整數值?
uj5u.com熱心網友回復:
在 mongo 中可能會有這樣的東西,您可以輕松地將其轉換為 python:
db.collection.aggregate([
{
$match: {
Name: "The Team" , "Members.User": NumberLong("699724278526580847")
}
},
{
"$addFields": {
"Members": {
"$filter": {
"input": "$Members",
"as": "m",
"cond": {
$eq: [
"$$m.User",
NumberLong("699724278526580847")
]
}
}
}
}
},
{
$unwind: "$Members"
},
{
"$project": {
Rank: "$Members.Rank",
_id: 0
}
}
])
解釋:
- 匹配成員和團隊
- 從陣列中僅按用戶過濾成員
- 展開陣列以轉換為物件
- 僅投影 Rank 欄位
操場
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/454981.html
