Mam kolekcję błędów, więc każdy błąd zawiera pole date
. Jak mogę agregować/liczyć/grupować błędy tylko do DAY (tj. Nie wliczając pory dnia)? Sądzę, że powinna być zastosowana pewna inteligentna projekcja.Jak agregować według daty, kiedy pełny znacznik czasu jest podany w strukturze agregacji?
Odpowiedz
Można to zrobić za pomocą następujących operatorów agregacji:
Daje to liczbę błędów na każdy dzień:
db.errors.aggregate(
{ $group : {
_id: {
year : { $year : "$date" },
month : { $month : "$date" },
day : { $dayOfMonth : "$date" },
},
count: { $sum: 1 }
}}
);
W tym przykładzie przyjęto, że pole daty w dokumentach błędów to date
i typu BSON Date. Istnieje również rodzaj znacznika czasu w MongoDB, ale stosowanie tego typu jest jawnie zniechęca the documentation:
Uwaga: Typ BSON Znacznik czasu jest dla użytku wewnętrznego MongoDB. W przypadku większości przypadków podczas opracowywania aplikacji będziesz chciał użyć daty BSON o numerze . Zobacz datę, aby uzyskać więcej informacji.
Jeszcze chwilkę - gdzie jest "_id"? Czy to musi być lub (najprawdopodobniej) coś tu brakuje? – BreakPhreak
Naprawiono @BreakPhreak (myślę - znowu, nie mogę tego teraz przetestować) – Philipp
PS: jako sidenote, dalej może być '$ sort" -ed przez '_id' (również testowane). – BreakPhreak
można zamienić pola datownika do łańcucha z konkretnego formatu daty za pomocą $project (aggregation)
aggregate([
{
'$project': {
newFieldName: {'$dateToString': {format: '%Y-%m-%d', date: '$yourDateFieldName'}}
}
}, {
'$group': {
_id: {newFieldName: '$newFieldName'},
viewCount: {'$sum': 1}
}
},
{'$sort': {'_id.newFieldName': 1}}
], {})
- 1. Jak agregować dane według daty i czasu?
- 2. Sortuj według daty w ramce agregacji mangusty
- 3. Znacznik czasu do daty ciągów
- 4. $ Odwiń obiekt w strukturze agregacji
- 5. Wiąz: znacznik czasu dekodera Json do daty
- 6. Jak znaleźć znacznik czasu/daty utworzenia katalogu węzła subversion
- 7. Angularjs: znacznik czasu do sformatowanego czasu UTC z pomocnikiem daty
- 8. Oblicz medianę w strukturze agregacji MongoDB
- 9. Postgresql - sortuj według czasu UUID v1 znacznik czasu
- 10. Kryterium grupy hibernacji według daty bez czasu
- 11. Unix znacznik czasu w sqlite?
- 12. Konwertuj znacznik czasu Unix do czytelnej daty w Perlu
- 13. jak uniknąć $ wypychanie wartości null w strukturze agregacji mongo
- 14. Znacznik czasu MongoDb
- 15. Wybierz grupę * według agregacji mongo
- 16. Struktura agregacji - Konwersja znacznika czasu Unix na ISODate
- 17. Lista zamówień według daty i czasu (w formacie smyczkowym)
- 18. Konwersja formatu szeregowego daty FULL Excel na znacznik czasu Unix
- 19. Uzyskaj znacznik czasu od daty ("z") i roku
- 20. Pandy - pogrupowanie ilości czasu w ciągu dnia według daty
- 21. Jaki jest format daty/czasu?
- 22. Konwertuj znacznik czasu Twittera w R
- 23. Jak porównać znacznik czasu SQL w .NET?
- 24. AngularJS ngTable filtrowanie według daty
- 25. Jak uzyskać znacznik czasu Unix w Clojure?
- 26. Jak uzyskać znacznik czasu w ClojureScript?
- 27. Jak utworzyć znacznik czasu w sekundach
- 28. Jak zdobyć uniksowy znacznik czasu w .NET
- 29. znacznik daty na Twitterze - gdzie jest strefa czasowa?
- 30. Czy istnieje funkcja floor w strukturze agregacji Mongodb?
na przyszłość jest impportant zdefiniować różnicę między znacznikami czasu i daty, znaczniki czasu nie może być używany tylko z aktualnych funkcji pola daty. To tylko uwaga, ponieważ Anglicy mnie odtrącili. – Sammaye
@Sammaye: dzięki, pytanie zostało naprawione. – BreakPhreak