When to use $bucket or $bucketauto

What I understood is $bucket is useful when embedding 1:S (squillion) relationship exist between two entities or 1:M but document size is much more. Bucketing also help to improve performance of referring specific buckets only.

When is it preferred to use $bucket or $bucketauto or $facet?
For example, there is an application, which add following sensor records at every 5 minutes:
{sensor_id : <> , sensor_name:< >, location : <>, timestamp : <>, value:<>}
{sensor_id : <> , sensor_name:< >, location : <>,reading:[{timestamp : <>, value:<>},…]}

But to create a bucket schema also, such large collection need to be queried. And Insertion of Sensor data is continuous . So, existing bucket schema need to be updated frequently. It shows two drawbacks : i) duplication of data in Denormalized and bucket format both. ii) Overhead of updating bucket schema and that too on continuously increasing collection.

Can you explain how and when to use bucket in such situation?

It appears that there is some confusion between the bucket design pattern which is a schema pattern for the storage of data as expressed by

And the analytical stages $bucket and $bucketAuto which are meant to produce calculated values, sums, averages …, based on your stored data. With $bucket you define value boundaries for the buckets and with $bucketAuto you define the number of documents per buckets.

The $facet stage is a completely different beast. It is used when you want 2 or more different processing for the same documents.

The $facet stage is another beast.