#python #json #mongodb #pymongo
#python #json #mongodb #pymongo
Вопрос:
Я разрабатываю REST API в MongoDB с помощью pymongo. У меня есть несколько конечных точек для выполнения разных запросов. Я хочу, чтобы данные JSON были созданы для сохранения заголовков, которые они имели в исходном файле JSON.
Это исходные данные JSON. "player": "Jamie Vardy", "team": "Leicester City", "assists": 5,
После выполнения моей конечной точки возвращаемые данные выглядят следующим образом:
5,
"Jamie Vardy",
"Leicester City",
Конечная точка:
@app.route("/api/v1.0/players/top-assister", methods=["GET"])
def top_assister():
pipeline = [ { "$match" : { "assists" : {"$gte" : 12} } },
{ "$project" : {"assists" : 1, "player" : 1, "team":1}}
]
top_assister = []
for player in players.aggregate(pipeline):
player["assists"]
str(player["player"])
str(player["team"])
top_assister.append([player["assists"], str(player["player"]), str(player["team"])])
return make_response(jsonify(top_assister), 200)
Комментарии:
1. Я думаю, вам не нужен цикл for-in . Вы можете напрямую получить список , используя это:
list(db.things.aggregate(pipeline))
(см. Учебные пособия Pymongo — Пример агрегации ). И передайте список в ответ.2. возможно, вам следует добавить dict вместо list —
apped ({"assists": player["assists"], "player": player["player"], "team": player["team"]})
. Или, может быть, вам следует ввести непосредственноplayer
append(player)
3. @furas Спасибо, добавление dict решило мою проблему