检查 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
}
])
我在 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
}
])