class Iro::Datapoint

def self.test

def self.test
  lookup = { '$lookup': {
    'from':         'iro_datapoints',
    'localField':   'date',
    'foreignField': 'date',
    'pipeline': [
      { '$sort': { 'value': -1 } },
    ],
    'as':           'datapoints',
  } }
  lookup_merge = { '$replaceRoot': {
    'newRoot': { '$mergeObjects': [
      { '$arrayElemAt': [ "$datapoints", 0 ] }, "$$ROOT"
    ] }
  } }
  match = { '$match': {
    'date': {
      '$gte': '2023-12-25',
      '$lte': '2023-12-31',
    }
  } }
  group = { '$group': {
    '_id': "$date",
    'my_doc': { '$first': "$$ROOT" }
  } }
  outs = Iro::Date.collection.aggregate([
    match,
    lookup,
    lookup_merge,
    group,
    { '$replaceRoot': { 'newRoot': "$my_doc" } },
    # { '$replaceRoot': { 'newRoot': "$my_doc" } },
    { '$project': { '_id': 0, 'date': 1, 'value': 1 } },
    { '$sort': { 'date': 1 } },
  ])
  puts! 'result'
  pp outs.to_a
  # puts! outs.to_a, 'result'
end