Я написал запрос в mongodb, используя агрегацию, которая работает нормально, но каким-то образом она не работает должным образом в моем коде python с pymongo. Пожалуйста, совет, как исправить.PyMongo query on Aggregation
Монго запрос:
db.flights.aggregate([
{ $match: { origin:"ATL", dest:"BOS",dayofweek: 3} },
{ $group: {
_id: {
origin:"$origin",
destination: "$dest"
},
Failure: { $sum: { $cond : [{ $eq : ["$cancelled", 1]}, 1, 0]} },
Success: { $sum: { $cond : [{ $eq : ["$cancelled", 0]}, 1, 0]} },
Total: { $sum: 1 }
} },
{$project:{Failure:1,Success:1, Total:1, FailPercent: { $divide: [ "$Failure", "$Total" ]}}},
{ $sort: { "_id.origin": 1, "_id.destination": 1 } }
])
В питона код:
client = MongoClient("localhost", 27017)
connect = client["database"]["collection"]
pipe2 = [ { '$match': { 'origin':"ATL", 'dest':"BOS",'dayofweek': 3} },
{ '$group': {
'_id': {
'origin':"$origin",
'destination': "$dest"
},
'Failure': { '$sum': { '$cond' : [{ '$eq' : ["$cancelled", 1]}, 1, 0]} },
'Success': { '$sum': { '$cond' : [{ '$eq' : ["$cancelled", 0]}, 1, 0]} },
'Total': { '$sum': 1 }
} },{'$project':{'Failure':1,'Success':1, 'Total':1, 'FailPercent': { '$divide': [ "$Failure", "$Total" ]}}},
{ '$sort': SON([("_id.origin", 1), ("_id.destination", 1)]) }
]
result = connect.aggregate(pipeline=pipe2)
результат запроса из PyMongo приходит неправильно, но в MongoDB правильно
что является результат вы возвращаетесь? –