public MachineRecord GetFirstInMonth(string serial_number, DateTime month)
        {
            MachineRecord record = null;

            if (string.IsNullOrEmpty(serial_number) == false)
            {
                var collection = _database.GetCollection <MachineRecord>(Collections.machine_records.ToString());
                var filter     = Builders <MachineRecord> .Filter.Gte(e => e.datetime, month) & Builders <MachineRecord> .Filter.Eq(e => e.serial_number, serial_number);

                record = collection.Find(filter).FirstOrDefault();
                record?.InitValues();
            }
            return(record);
        }
        public MachineRecord GetLatestForDevice(string serial_number)
        {
            MachineRecord record = null;

            if (serial_number != null)
            {
                var collection = _database.GetCollection <MachineRecord>(Collections.machine_records.ToString());
                var sort       = Builders <MachineRecord> .Sort.Descending(e => e.datetime);

                var filter = Builders <MachineRecord> .Filter.Eq(e => e.serial_number, serial_number);

                record = collection.Find <MachineRecord>(filter)?.Sort(sort)?.FirstOrDefault();

                record?.InitValues();
            }
            return(record);
        }