asp.net core 통합 MongoDB 의 전체 절차

9091 단어 core집성mongodb
1.머리말 및 MongoDB 의 소개
최근 자신의 프레임 워 크 를 통합 하 는 김 에 MongoDBD 의 가장 간단 한 CRUD 를 재 구성 하여 asp.net core 프로젝트 에 통합 시 켰 습 니 다.물론 이 글 에는 mongodb 의 클 러 스 터 배 치 를 설명 하지 않 았 습 니 다.공유 할 기회 가 있 습 니 다.
우선,우 리 는 MongoDB 의 공식 문서 에서 MongoDb 의 2.4 이상 For.Net 의 구동 은.Net Core 2.0 을 지원 하 는 것 을 보 았 다.

몽고 DB 에 대해 서 는 여러분 이 낯 설 지 않 을 것 이 라 고 생각 합 니 다.사용 해 보지 도 않 았 고 들 어 본 적도 있 습 니 다.
1.몬 godb 는 무엇 입 니까?
MongoDB 는 분포 식 파일 을 기반 으로 저 장 된 데이터베이스 로 웹 응용 에 확장 가능 한 고성능 데이터 저장 솔 루 션 을 제공 하 며 관계 형 데이터 베이스 와 비 관계 형 데이터 베이스 에 있 는 제품 으로 비 관계 형 데이터 베이스 에서 기능 이 가장 풍부 하 다.데이터 처리 에 있어 서 는 이기 적 인 장치 이다.
2.관계 형 데이터베이스 와 비 관계 형 데이터 베 이 스 는 무엇 입 니까?
관계 형 데이터베이스:우리 가 사 용 했 던 sqlserver,my sql 등 은 모두 관계 형 데이터 베이스 이 고 관계 형 데이터 베 이 스 는 ACID 원칙 에 따라 엄격 한 일치 성 을 가진다.
비 관계 형 데이터베이스:NoSQL 이 라 고도 부 릅 니 다.초대형 데이터 와 의 저장 으로 이러한 유형의 데이터 저장 은 고정된 패턴 이 필요 없고 불필요 한 조작 없 이 가로로 확장 할 수 있 습 니 다.
3、RDBMS VS NoSQL
RDBMS:
고도 조직 구조 화 데이터
구조 화 조회 언어
데이터 와 관 계 는 모두 단독 표 에 저장 되 어 있다.
엄격 한 일치 성
실무,일,총무
NoSQL:
설명 없 는 쿼 리 언어
키-값 대 저장,열 저장,문서 저장 등
최종 일치 성
비구 조화 와 예측 할 수 없 는 데이터
CAP 정리,높 은 사용 가능,고성능,높 은 확장
나 는 여기까지 말 하면 눈치 빠 른 학생 들 이 CAP 의 정리 와 최종 일치 성 을 알 아차 리 고 분포 식 시스템 을 연상 시 킬 것 이 라 고 믿는다.여기 서 너 에 게 큰 찬 사 를 줄 것 이다.분포 식 시스템 에서 nosql 을 완벽 하 게 결합 하여 우리 의 성능 을 향상 시 킬 수 있 습 니 다.
4.RDBMS 와 Mongodb 의 개념 을 소개 하여 이해 에 도움 이 됩 니 다.

다음 과 같이 번역 합 니 다.

2.asp.net 코어 통합 mongoDB
1.windows 버 전의 mongodb server 를 편리 하 게 다운로드 하 였 습 니 다.
여러분 은 스스로 홈 페이지 에 가서 다운로드 한 후에 시각 화 된 인터페이스 에 착안 하여 저 는 Robo 3T 라 는 도 구 를 사 용 했 습 니 다.간결 하고 아름 다운 시각 화 도구.추천 합 니 다.
설치 가 끝나 면 windows 서비스 에서 mongodb server 를 볼 수 있 습 니 다.

그리고 로 보 3T 를 열 고 몬 godb 를 연결 합 니 다.

2.프로젝트 에 우리 몬 godb 를 설정 합 시다
STEP 1:코어 2.0 라 이브 러 리 를 새로 만 듭 니 다.
'MongoDB.Driver'라 는 nuget 패 키 지 를 도입 했다.
그리고 Startup.cs 의 Services 확장 방법 을 확 장 했 습 니 다.

//    public static class ServiceCollectionExtensions
 {
 public static void AddMongoDB(this IServiceCollection services, IConfiguration configuration)
 {
  services.Configure<Settings>(options =>
  {
  options.ConnectionString = configuration.GetSection("MongoConnection:ConnectionString").Value;
  options.Database = configuration.GetSection("MongoConnection:Database").Value;
  });
 }
 }
두 번 째 단계:mongodb 에 포 장 된 CRUD 클래스 를 재 구성 합 니 다.여 기 는 자체 적 으로 포장 할 수 있 고 검색 과 추가 만 보 여 줍 니 다.

public class MongoDBBase
 {
 private readonly IMongoDatabase _database = null;
 public MongoDBBase(string connectionString, string databaseName)
 {
  var client = new MongoClient(connectionString);
  if (client != null)
  {
  _database = client.GetDatabase(databaseName);
  }
 }

 #region SELECT
 /// <summary>
 ///       ,    
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="id"></param>
 /// <returns></returns>
 public List<T> GetList<T>(Expression<Func<T, bool>> conditions = null)
 {
  var collection = _database.GetCollection<T>(typeof(T).Name);
  if (conditions != null)
  {
  return collection.Find(conditions).ToList();
  }
  return collection.Find(_ => true).ToList();
 }#endregion

 #region INSERT/// <summary>
 ///       ,   list  
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="list"></param>
 /// <returns></returns>
 public List<T> InsertMany<T>(List<T> list)
 {
  var collection = _database.GetCollection<T>(typeof(T).Name);
  collection.InsertMany(list);
  return list;
 }
 #endregion
 }
세 번 째 단계:asp.net core webapi 프로젝트 를 새로 만 들 고 이 라 이브 러 리 를 참조 하여 프 리 젠 테 이 션 합 니 다.
프로젝트 에 있 는 apptsetting.json 에 mongodb 연결 문자열 을 추가 합 니 다.저 는 여기 서 사용자 정의 데이터 이름 testdb 를 사용 합 니 다.mongodb 를 삽입 할 때 자동 으로 데이터베이스 와 집합,문 서 를 만 듭 니 다.이어서 아래 를 보다

 "MongoConnection": { //mongodb     
 "ConnectionString": "mongodb://127.0.0.1:27017",
 "Database": "testdb",
 "IsSSL": true
 },
네 번 째 단계:mongodb 테스트 컨트롤 러 를 새로 만 들 고 단일 항목 과 여러 항목 을 삽입 하고 조회 하 는 인 터 페 이 스 를 보 여 줍 니 다.

[Produces("application/json")]
 [Route("api/MongoDB/[action]")]
 public class MongoDBController : Controller
 {
  private readonly MongoDBBase _context = null;
  public MongoDBController(IOptions<Settings> settings)
  {
   _context = new MongoDBBase(settings.Value.ConnectionString, settings.Value.Database);
  }
  [HttpGet]
  public IActionResult AddList()
  {
   List<MongoDBPostTest> list = new List<MongoDBPostTest>()
   {
    new MongoDBPostTest()
    {
     Id = "2",
     Body = "Test note 3",
     UpdatedOn = DateTime.Now,
     UserId = 1,
     HeaderImage = new NoteImage
     {
      ImageSize = 10,
      Url = "http://localhost/image1.png",
      ThumbnailUrl = "http://localhost/image1_small.png"
     }
    },
    new MongoDBPostTest()
    {
     Id = "3",
     Body = "Test note 4",
     UpdatedOn = DateTime.Now,
     UserId = 1,
     HeaderImage = new NoteImage
     {
      ImageSize = 14,
      Url = "http://localhost/image3.png",
      ThumbnailUrl = "http://localhost/image3_small.png"
     }
    }
   };

   try
   {
    _context.InsertMany(list);
   }
   catch (Exception ex)
   {

    throw;
   }

   return Ok("  ");
  }

  [HttpGet]
  public Result<List<MongoDBPostTest>> SelectSingle()
  {
   //   
   var list = _context.GetList<MongoDBPostTest>();

   //   
   //var list = _context.GetList<MongoDBPostTest>(a => a.Id == "1");

   //      ,   
   //var list = _context.GetSingle<MongoDBPostTest>();

   //      ,   
   //var list = _context.GetSingle<MongoDBPostTest>(a => a.Id == "3");

   ObjectId internalId = _context.GetInternalId("5bbf41651d3b66668cbb5bfc");

   var a = _context.GetSingle<MongoDBPostTest>(note => note.Id == "5bbf41651d3b66668cbb5bfc" || note.InternalId == internalId);

   return ResHelper.Suc(1, list, "  ");
  }
}
테스트 클래스

public class MongoDBPostTest
 {
  [BsonId]
  // standard BSonId generated by MongoDb
  public ObjectId InternalId { get; set; }
  public string Id { get; set; }

  public string Body { get; set; } = string.Empty;

  [BsonDateTimeOptions]
  public DateTime UpdatedOn { get; set; } = DateTime.Now;

  public NoteImage HeaderImage { get; set; }

  public int UserId { get; set; } = 0;
 }

public class NoteImage
 {
  public string Url { get; set; } = string.Empty;
  public string ThumbnailUrl { get; set; } = string.Empty;
  public long ImageSize { get; set; } = 0L;
 }
다섯 번 째 단계:프로젝트 를 실행 하고 실행 합 니 다.
여러 개의 데 이 터 를 삽입 하 는 것 을 실행 합 시다.실행 에 성공 하 였 습 니 다.

그리고 데이터 베 이 스 를 살 펴 보 니 testdb 데이터 베 이 스 를 만 들 었 고 그 안에 우리 의 데이터 내용 이 포함 되 어 있 습 니 다.

그리고 우 리 는 다음 과 같은 조 사 를 수행 합 니 다.우리 가 방금 삽입 한 데 이 터 를 되 돌려 주 었 습 니 다.

주의:여기 해결 해 야 할 구덩이 가 있 습 니 다.바로 mongodb 가 저장 하 는 시간 은 UTC 입 니 다.우리 의 현지 시간 과 8 시간 차이 가 납 니 다.그래서 이쪽 은 특별히 처리 할 시간 이 필요 합 니 다.
3.총화
이로써 몬 godb 의 간단 한 운용 은 이미 시연 이 끝 났 고 후기 에 여러분 들 은 공식 문서 에 따라 확장 할 수 있 으 며 뒤로 확장 할 수록 점점 재 미 있 을 것 입 니 다.여러분 의 지지 에 감사 드 립 니 다.Thank you。
참고 문서:
mongodb 튜 토리 얼:http://www.runoob.com/mongodb/mongodb-tutorial.html
mongodb 중국어 매 뉴 얼:http://www.mongoing.com/docs/
자,이상 이 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기