Próbuję utworzyć kwerendę agregacji za pomocą kolby-mongoengine, a z tego, co przeczytałem, nie brzmi jak to jest możliwe.Zapytanie agregacyjne kolba-MongoEngine i PyMongo
Przejrzałem kilka wątków na forach, wiadomości e-mail i kilka pytań dotyczących Stack Overflow, ale nie znalazłem dobrego przykładu, jak zaimplementować agregację z monolitycznym kolbem.
Istnieje komentarz w this question, który mówi, że musisz użyć "nieprzetworzonej funkcji pymongo i agregacji". Jednak nie ma przykładów, jak to może działać. Mam majsterkowanie w Pythonie i mam podstawową aplikację za pomocą struktury Flask, ale zagłębianie się w pełnoprawne aplikacje & łączenie/wysyłanie zapytań do Mongo jest dla mnie całkiem nowe.
Czy ktoś może podać przykład (lub link do przykładu) tego, w jaki sposób mogę wykorzystać moje modele z kolbowym mongogensem, ale zapytanie za pomocą struktury agregacji z PyMongo? Czy będzie to wymagało dwóch połączeń z MongoDB (jeden dla PyMongo, aby wykonać zapytanie agregacyjne, a drugi dla zwykłego zapytania/wstawienia/aktualizacji za pośrednictwem MongoEngine)?
przykładem kwerendy agregacji chciałbym wykonać to w następujący sposób (ta kwerenda pobiera mi dokładnie informacje chcę w Mongo shell):
db.entry.aggregate([
{ '$group' :
{ '_id' : { 'carrier' : '$carrierA', 'category' : '$category' },
'count' : { '$sum' : 1 }
}
}
])
przykładem wyjścia z tej kwerendy:
{ "_id" : { "carrier" : "Carrier 1", "category" : "XYZ" }, "count" : 2 }
{ "_id" : { "carrier" : "Carrier 1", "category" : "ABC" }, "count" : 4 }
{ "_id" : { "carrier" : "Carrier 2", "category" : "XYZ" }, "count" : 31 }
{ "_id" : { "carrier" : "Carrier 2", "category" : "ABC" }, "count" : 6 }
Awesome! Dziękuję Ci bardzo. To było trochę kłopotliwe, gdy próbowałem znaleźć rozwiązanie. Testowałem metodą "_get_collection()" i byłem w stanie uzyskać wyjście z Mongo. – SirCobalt
Znakomita odpowiedź !! Aby dodać do tego, jeśli chcesz uruchomić klauzulę group by na niektórych rekordach, możesz użyć operatora $ match w następujący sposób: 'Model._get_collection(). Agregat ([ { " $ match " : qs._query, }, } {'$ grupa': {'_id': {'carrier': '$ carrierA', 'category': '$ category'}, 'count': {'$ sum ": 1} } } ])' gdzie qs jest instancją zapytania zapytania MongoEngine. – Yahya