簡體   English   中英

我怎樣才能在 MongoDB (Pymongo) 中只得到一個值

[英]How can I get only a single value back in MongoDB (Pymongo)

這是我現在擁有的文件:

{
    _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 中是否有可能只獲得該用戶排名的 integer 值?

也許在 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
  }
 }
])

解釋:

  1. 匹配成員和團隊
  2. 僅從數組中按用戶過濾成員
  3. 展開數組以轉換為 object
  4. 僅投影 Rank 字段

操場

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM