Как я могу сохранить заголовки для моих данных JSON после агрегации?

#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 решило мою проблему