Tecnicamente non è necessario frammentare il contenuto e basta indicizzare il campo. Sì, puoi creare il campo dell'indice sulla data e sarebbe rispettato che puoi vedere visitando il piano di query db.collection.explain("executionStats")
Tuttavia, la scelta di una chiave shard è molto importante. ci sono alcune cose da considerare durante la scelta della chiave shard
- Write scaling (high cardinality, Randomization)
- Query Isolation. (read)
la scelta del campo della data in realtà dà una cardinalità molto alta, tuttavia non riesce a eseguire la randomizzazione e di conseguenza tutti i documenti vengono archiviati nel singolo shard e quindi limita la capacità di scrittura del sistema. Per lo stesso motivo si sconsiglia di utilizzare ObjectId come chiave shard.
http://docs.mongodb.org/manual/core/sharding- shard-key/ Contenuto dal link sopra.."MongoDB genera valori ObjectId al momento della creazione del documento per produrre un identificatore univoco per l'oggetto. Tuttavia, i bit di dati più significativi in questo valore rappresentano un timestamp, il che significa che aumentano in un modello regolare e prevedibile. Anche se questo valore ha una cardinalità elevata, quando si utilizza questa, qualsiasi data o un altro numero monotonicamente crescente come chiave shard, tutte le operazioni di inserimento memorizzeranno i dati in un unico blocco e, quindi, in un singolo shard. di conseguenza, la capacità di scrittura di questo shard definirà la capacità di scrittura effettiva del cluster."