PyMongo:使用 $push 更新现有文档并引用另一个文档
PyMongo: Using $push to update an existing document with a reference to another document
我有一个 teams 集合和一个 players 集合。我正在尝试使用 $push.
将文档从 **players 集合插入 teams* 集合
以下是两者的数据模型:
团队:
{
"team_id": 1,
"team_name": team_name,
"general_manager": general_manager,
"players": [
]
}
玩家:
{
"_id": "5c076550c779ce4fa2d4c9fd"
"first_name": first_name,
"last_name": last_name,
}
这是我使用的代码:
player = players.find_one({ "$and": [
{"first_name": first_name},
{"last_name": last_name}] })
teams.update(
{"team_name": team_name},
{"$push":
{"players": {
"$ref": "players",
"$id": player["_id"],
"$db": db
}}})
执行此操作时,出现以下错误消息:
pymongo.errors.WriteError: 发现 $id 字段前面没有 $ref,这是无效的。
我做错了什么?提前致谢!
我稍微简化了您的查询。试试下面(评论中的解释)
//Locate the player record
player = players.find_one({"first_name": first_name,"last_name": last_name})
//push this into the "players" array of the team
teams.update_one({"team_name": team_name},
{"$push": {"players": player } }
)
我使用 update_one 而不是更新,因为我假设您只需要更新团队集合中的一个文档。
我有一个 teams 集合和一个 players 集合。我正在尝试使用 $push.
将文档从 **players 集合插入 teams* 集合以下是两者的数据模型:
团队:
{
"team_id": 1,
"team_name": team_name,
"general_manager": general_manager,
"players": [
]
}
玩家:
{
"_id": "5c076550c779ce4fa2d4c9fd"
"first_name": first_name,
"last_name": last_name,
}
这是我使用的代码:
player = players.find_one({ "$and": [
{"first_name": first_name},
{"last_name": last_name}] })
teams.update(
{"team_name": team_name},
{"$push":
{"players": {
"$ref": "players",
"$id": player["_id"],
"$db": db
}}})
执行此操作时,出现以下错误消息:
pymongo.errors.WriteError: 发现 $id 字段前面没有 $ref,这是无效的。
我做错了什么?提前致谢!
我稍微简化了您的查询。试试下面(评论中的解释)
//Locate the player record
player = players.find_one({"first_name": first_name,"last_name": last_name})
//push this into the "players" array of the team
teams.update_one({"team_name": team_name},
{"$push": {"players": player } }
)
我使用 update_one 而不是更新,因为我假设您只需要更新团队集合中的一个文档。