Technicznie rzecz biorąc, nie musisz dzielić treści, a jedynie indeksować swoje pole. Tak, możesz utworzyć indeks w polu daty i będzie to przestrzegane, co możesz zobaczyć, odwiedzając plan zapytań db.collection.explain("executionStats")
Jednak wybór klucza fragmentu jest bardzo ważny. przy wyborze klucza shard należy wziąć pod uwagę kilka rzeczy
- Write scaling (high cardinality, Randomization)
- Query Isolation. (read)
wybór pola daty w rzeczywistości daje bardzo dużą kardynalność, jednak nie udaje się przeprowadzić randomizacji, w wyniku czego wszystkie dokumenty są przechowywane w jednym fragmencie, co ogranicza pojemność zapisu systemu. Z tego samego powodu odradza się używanie ObjectId jako klucza fragmentu.
http://docs.mongodb.org/manual/core/sharding- klucz-shard/ Treść z powyższego linku.."MongoDB generuje wartości ObjectId podczas tworzenia dokumentu, aby wygenerować unikalny identyfikator obiektu. Jednak najbardziej znaczące bity danych w tej wartości reprezentują znacznik czasu, co oznacza, że zwiększają się w regularny i przewidywalny wzorzec.Chociaż ta wartość ma wysoką kardynalność, podczas używania tej, dowolnej daty lub innej monotonicznie rosnącej liczby jako klucza fragmentu, wszystkie operacje wstawiania będą przechowywać dane w jednym kawałku, a zatem w jednym fragmencie. w rezultacie pojemność zapisu tego fragmentu określi efektywną pojemność zapisu klastra”.