class Iro::Datapoint
def self.test_0trash
def self.test_0trash add_fields = { '$addFields': { 'date_string': { '$dateToString': { 'format': "%Y-%m-%d", 'date': "$created_at" } } } } # group = { '$group': { # '_id': "$date_string", # 'my_doc': { '$first': "$$ROOT" } # } } group = { '$group': { '_id': "$date", 'my_doc': { '$first': "$$ROOT" } } } lookup = { '$lookup': { 'from': 'iro_dates', 'localField': 'date_string', 'foreignField': 'date', 'as': 'dates', } } lookup_merge = { '$replaceRoot': { 'newRoot': { '$mergeObjects': [ { '$arrayElemAt': [ "$dates", 0 ] }, "$$ROOT" ] } } } match = { '$match': { 'kind': 'some-type', 'created_at': { '$gte': '2023-12-01'.to_datetime, '$lte': '2023-12-31'.to_datetime, } } } outs = Iro::Datapoint.collection.aggregate([ add_fields, lookup, lookup_merge, match, { '$sort': { 'date_string': 1 } }, group, # { '$replaceRoot': { 'newRoot': "$my_doc" } }, # { '$project': { '_id': 0, 'date_string': 1, 'value': 1 } }, ]) puts! 'result' pp outs.to_a # puts! outs.to_a, 'result' end