检查 2 个用户是否在同一个数组中并比较他们在 MongoDB 中的排名(Pymongo)

Check if 2 Users are in the same array and compare their ranks in MongoDB (Pymongo)

我在 Python 和 MongoDB 的特定任务中遇到困难。首先,我将一些用户数据作为对象存储在 MongoDB 数组中,我需要做的第一件事是检查是否有 2 个用户在同一个数组中。如果是,我需要检查一个用户的排名是否高于另一个。如果用户的等级更高,则允许他踢其他用户。否则,用户被告知他需要比目标用户有更高的排名。 在这个例子中只有 2 个用户,但实际上有很多用户,并且 2 个是根据发送的命令选择的不和谐,所以我不能只做数组 [0]、数组 [1]。数据是这样存储的:

  

    {
        _id: ObjectId("62464e3e75c6d843a338993b"),
        Name: 'Team',
        Members: [ 
            { 
                User: Long("699724378526580848"), 
                Rank: 4 
            } 
        ]
    }

如果仅使用一个查询就可以检查用户是否都在同一个数组中,那就太好了。如果没有,那么无论哪种方式都是最有效的。

使用$all

db.collection.aggregate([
  {
    $match: { "Members.User": { $all: [ 123, 456 ] } }
  },
  {
    $unwind: "$Members"
  },
  {
    $sort: { "Members.Rank": -1 }
  },
  {
    $limit: 1
  }
])

mongoplayground