See: MongoDb module

class BeaconMongoDbPersistence : MongoDbPersistence<BeaconV1>
{
    public BeaconMongoDbPersistence()
    {
        base("beacons");
    }

    public async BeaconV1 GetByNameAsync(string correlationId, string name)
    {
        var builder = Builders<BeaconV1>.Filter;
        var filter = builder.Eq(x => x.Name, name);
        var result = await _collection.Find(filter).FirstOrDefaultAsync();
        return result;
    }

    public async BeaconV1 setAsync(String correlatonId, BeaconV1 item)
    {
        var filter = Builders<BeaconV1>.Filter.Eq(x => x.Id, item.Id);
        var options = new FindOneAndReplaceOptions<T>
        {
            ReturnDocument = ReturnDocument.After,
            IsUpsert = true
        };
        var result = await _collection.FindOneAndReplaceAsync(filter, item, options);
        return result;
    }
}