Mam tabelę MYSQL z zapisami nazwisk osób i czasem przybycia wyrażonym jako liczba. Pomyśl o tym jak o maratonie. Chcę wiedzieć, ile osób przybyło w pewnym odstępem czasu, który gdzie nazwie takie same, więc:Migracja do MongoDB: jak zapytać GROUP BY + WHERE
SELECT name, COUNT(*) FROM mydb.mytable
WHERE Time>=100 AND Time<=1000
GROUP BY name
I jak wyniki uzyskać:
Susan, 1
John, 4
Frederick, 1
Paul, 2
mam migracji do MongoDB teraz i używanie Pythona do kodowania (więc proszę o pomoc Pymongo). Próbowałem szukać informacji na temat odpowiednika GROUP BY (nawet gdy przeczytałem, że bazy danych NoSQL są gorsze w tego typu operacjach niż te SQL), ale odkąd wydali nowy API agreggate, nie mogłem znaleźć prosty przykład, taki jak ten rozwiązany przy użyciu metody grupowej, metody Map-Reduce lub zupełnie nowego API agreggate.
Każda pomoc?
Myślę, że przy użyciu $ name jest co mnie wątpliwości jak to zrobić, ponieważ nazwa jest nazwą pola w bazie danych, a nie znacznikiem pymongo. Dlaczego nazwa pola do zgrupowania jest wyrażana w ten sposób? –
@RomanRdgz Jeśli jestem szczery, nie wiem, to była decyzja projektowa, że musiałbyś zapytać o 10gen, jednak bez '$' ciąg jest traktowany jako literał w MongoDB, to '$' sprawia, że MongoDB reaguje tak, jakby była wartością pola – Sammaye