我有这样一个结构:
{
"id" : 1,
"user" : "somebody",
"players" : [
{
"name" : "lala",
"surname" : "baba",
"player_place" : "1",
"start_num" : "123",
"results" : {
"1" : { ... }
"2" : { ... },
...
}
},
...
]
}
我对MongoDB还很陌生,我只是不知道如何为一个特定的user
(在这个例子中是“某人”,但是有很多其他用户,每个用户都有一个玩家数组,每个玩家都有很多结果)提取results
对于一个特定的player
和start_num
我正在使用pymongo,这是我的代码:
record = collection.find(
{'user' : name}, {'players' : {'$elemMatch' : {'start_num' : start_num}}, '_id' : False}
)
这将为给定用户提取带有特定播放器的players
。这很好,但是现在我需要从results
得到具体的结果,如下所示:
{ 'results' : { '2' : { ... } } }
我试过:
record = collection.find(
{'user' : name}, {'players' : {'$elemMatch' : {'start_num' : start_num}}, 'results' : result_num, '_id' : False}
)
但这当然行不通。我可以用Python将其转换为list并提取我需要的内容,但我想用Mongo中的query来实现这一点
另外,我需要做些什么来替换results
中针对特定用户的特定播放器的特定结果?假设我有一个键为2
的新结果,我想替换键为2
的现有结果。我是否可以使用与find()
相同的查询(只是用方法replace
或find_and_replace
替换方法find
)
你可以替换一个特定的结果,它的语法应该是这样的
假设要用键1替换结果
相关问题 更多 >
编程相关推荐