Skip to main content

MongoDB

Download MongoDB from https://www.mongodb.com/what-is-mongodb 

Install MongoDb nuget package: MongoDB.Driver (Author: rstam.craigwilson)


Service 

______________________________________________________________________
public interface IMongoService
    {
         Employee CreateEmployee(Employee employee);
        void Delete(string id);
        Employee GetEmployeeById(string id);
        List<Employee> GetEmployees();
        Employee Update(Employee employee);
    }

public class MongoService : IMongoService
    {
        IMongoCollection<Employee> _mongoCollection;
        public MongoService(IOptions<EmpDatabaseSettings> options)
        {
            Options = options;
            var client = new MongoClient(options.Value.ConnectionString);
            var database = client.GetDatabase(options.Value.DatabaseName);

            _mongoCollection = database.GetCollection<Employee>(options.Value.EmpCollectionName);
        }

        public IOptions<EmpDatabaseSettings> Options { get; }

        public List<Employee> GetEmployees()
        {
            return _mongoCollection.Find(i => true).ToList();
        }

        public Employee GetEmployeeById(string id)
        {
            return _mongoCollection.Find(i => i.Id.Equals(id)).FirstOrDefault();
        }

        public Employee CreateEmployee(Employee employee)
        {
            _mongoCollection.InsertOne(employee);
            return employee;
        }

        public Employee Update(Employee employee)
        {
            _mongoCollection.ReplaceOne(i => i.Id.Equals(employee.Id), employee);
            return employee;
        }

        public void Delete(string id)
        {
            _mongoCollection.DeleteOne(i => i.Id.Equals(id));
        }

__________________________________________________________________

Controller


[Route("api/Employee")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        public IMongoService MongoService { get; }

        public ValuesController(IMongoService mongoService)
        {
            MongoService = mongoService;
        }

        [HttpGet()]
        public IActionResult GetAllEmployees()
        {
            try
            {
                return Ok(this.MongoService.GetEmployees());
            }
            catch (Exception ex)
            {
                return BadRequest(ex.Message);
            }

        }

        [HttpGet("{id}")]
        public IActionResult GetEmployeeById(string id)
        {
            try
            {
                return Ok(this.MongoService.GetEmployeeById(id));
            }
            catch (Exception ex)
            {
                return BadRequest(ex.Message);
            }
        }

        [HttpPost()]
        public IActionResult CreateEmployee([FromBody]Employee employee)
        {
            try
            {
                return Ok(this.MongoService.CreateEmployee(employee));
            }
            catch (Exception ex)
            {
                return BadRequest(ex.Message);
            }
        }

        [HttpPut()]
        public IActionResult UpdateEmployee([FromBody]Employee employee)
        {
            try
            {
                return Ok(this.MongoService.Update(employee));
            }
            catch (Exception ex)
            {
                return BadRequest(ex.Message);
            }
        }

        [HttpDelete("{id}")]
        public IActionResult DeleteEmployee(string id)
        {
            try
            {
                this.MongoService.Delete(id);
                return Ok();
            }
            catch (Exception ex)
            {
                return BadRequest(ex.Message);
            }
        }


    }
__________________________________________________________________

classes

 public class Employee
    {
        [BsonId]
        [BsonRepresentation(BsonType.ObjectId)]
        public string Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public Details Details { get; set; }
    }

    public class Details
    {
        public string City { get; set; }

        public string Address { get; set; }
    }

___________________________________________________________

Appsettings.json

 "EmpDatabaseSettings": {
    "EmpCollectionName": "Employee",
    "ConnectionString": "mongodb://localhost:27017",
    "DatabaseName": "EmployeeDB"
  },


  public class EmpDatabaseSettings
    {
        public string EmpCollectionName { get; set; }
        public string ConnectionString { get; set; }
        public string DatabaseName { get; set; }
    }

____________________________________________________________________

Strartup.cs 

Inside ConfigureServices (Register these dependencies)

 services.Configure<EmpDatabaseSettings>(this.Configuration.GetSection(nameof(EmpDatabaseSettings)));
           
 services.AddTransient<IMongoService, MongoService>();

Comments