.Net 에서 MoongoDB 의 간단 한 호출 그래 픽 튜 토리 얼

7785 단어 .netmoongodb호출
머리말
본 고 는 주로.Net 에서 MoongoDB 호출 방법 에 대해 소개 하 였 으 며,공유 하여 여러분 께 참고 학습 을 제공 하 였 습 니 다.다음은 더 이상 말씀 드 리 지 않 겠 습 니 다.상세 한 소 개 를 해 보 겠 습 니 다.
방법 은 다음 과 같다.
1.설치.Net 드라이버:Install-Package MongoDB.Driver
2.데이터 삽입,데이터베이스 연결  

//  Person   
 public class Person
 {
  public long Id { get; set; }
  public int Age { get; set; }
  public string Name { get; set; }
  public int Height { get; set; }
  public TestPerson t1{ get; set; }
 }
 public class TestPerson {
  public string Name { get; set; }
 }
 public class ObjectPerson {
  public ObjectId Id { get; set; }
  public int Age { get; set; }
  public string Name { get; set; }
  public int Height { get; set; }
 }

MongoClient client = new MongoClient("mongodb://127.0.0.1");
 IMongoDatabase database = client.GetDatabase("TestDb");//      
 IMongoCollection<Person> collection = database.GetCollection<Person>("Persons");//      
 Person p1 = new Person()
 {
 Id = 2,
 Name = "test1",
 Age = 29,
 Height=130
 };   
 collection.InsertOne(p1);//           ,         !     !
클 라 이언 트 도구 로 돌아 가 새로 삽 입 된 데 이 터 를 볼 수 있 습 니 다.MongoDB 는 자동 으로'데이터베이스'와 Collection(약'표')을 만 듭 니 다.MongoDB 는 기본적으로 id 를 메 인 키 로 사용 하기 때문에 명시 적 으로 id 를 메 인 키 로 지정 하지 않 아 도 됩 니 다.

MongoDB 에는'자체 증가 필드'가 내장 되 어 있 지 않 습 니 다.Id 를 ObjectId 형식(using MongoDB.Bson)으로 설명 할 수 있 습 니 다.이렇게 삽입 하면 필드 에 자동 으로 값 을 부여 합 니 다.

 //    
 IMongoCollection<ObjectPerson> collection1 = database.GetCollection<ObjectPerson>("ObjectPersons");//      
 List<ObjectPerson> persons = new List<ObjectPerson>() { new ObjectPerson() { Name = "test2", Age = 30, Height = 135 }, new ObjectPerson() { Name = "test3", Age = 31, Height = 140 } };
 collection1.InsertMany(persons);//    

MongoDB 는 json 으로 저장 되 어 있 기 때문에 json 형식 으로 직접 삽입 할 수도 있 고 BsonDocument 으로 대표 할 수도 있 습 니 다.

IMongoCollection<BsonDocument> dogs = database.GetCollection<BsonDocument>("Dogs");
string jsondata = "{id:8999,Age:81,Name:'japan',gender:true}";
BsonDocument p2 = BsonDocument.Parse(jsondata);
dogs.InsertOne(p2);

또한 포 함 된 관 계 를 가 진 대상 을 삽입 할 수 있 습 니 다.예 를 들 어 학생 과 선생님 은 표 간 의 관계 가 없 으 며 모두 집합 에 저장 되 어 있 습 니 다.주의 와 관계 라 이브 러 리 가 다 릅 니 다.

IMongoCollection<Person> collection = database.GetCollection<Person>("Persons");//      
Person p1 = new Person()
{
 Id = 2,
 Name = "test1",
 Age = 29,
 Height=130,
 t1=new TestPerson() { Name="222"}
};   
 collection.InsertOne(p1);//    

3.MongoDB 조회

IMongoCollection<Person> collection = database.GetCollection<Person>("Persons");
var filter = Builders<Person>.Filter.Gt(p => p.Age,5);
var filter1 = Builders<Person>.Filter.And(Builders<Person>.Filter.Gt(p => p.Age, 5), Builders<Person>.Filter.Eq(p => p.Id, 1));// And      or  
var filter2 = Builders<Person>.Filter.Where(p => p.Age > 5 && p.Id == 1);//            ,   Where  
 //    
var result= collection.Find(filter).ToList();
foreach (var item in result)
{
 Console.WriteLine(item.Age + item.Name);
}
Gt 외 에 Gte,In,Lt,Lte,Ne,Nin,Near,Nearsphere,Or,Where,And,Not 도 있다.물론 가장 많이 사용 되 는 것 은 Where 작업 입 니 다.
 비동기 조회

//    
 using (IAsyncCursor<Person> personsCursor = await collection.FindAsync<Person>(filter)) {
 while (personsCursor.MoveNextAsync().Result)//       ,        ,MongoDB        ,  sql       
 {
 IEnumerable<Person> items = personsCursor.Current;//        
 foreach (var item in items)
 {
  Console.WriteLine(item.Age + item.Name);
 }
 }
 //       ,    tolist
 var results = personsCursor.ToList();
}
  왜 FindAsync 는 직접 집합 으로 돌아 가지 않 고 MoveNext 를 한 후에 집합 으로 돌아 가 야 합 니까?되 돌아 오 는 데 이 터 량 이 많 을 수 있 기 때문에 MongoDB 는 분할 다운로드 이 며,한 묶음 을 다운로드 한 후 GET 를 실행 합 니 다.더 많은 조작 은 다음 단계 로 되 돌아 갑 니 다.FindOptions 매개 변수의 BatchSize 를 통 해 모든 크기 를 설정 할 수 있 습 니 다.
  되 돌아 오 는 데이터 의 양 이 많 지 않 은 것 을 확인 하면 var ps=await persons Cursor.ToListAsync()(또는 ToEnumerable()등)에서 모든 데 이 터 를 한꺼번에 되 돌려 줍 니 다.Any,First,First OrDefault 등 과 비동기 작업 도 있 습 니 다.MongoDB 에서 검색 할 때 대소 문 자 를 구분 하 는 것 에 주의해 야 한다.
4.페이지 별 조회

//  
FindOptions<Person, Person> findop = new FindOptions<Person, Person>();
findop.Limit = 3;//     
findop.Skip = 2;//    
findop.Sort = Builders<Person>.Sort.Ascending(p => p.Age).Ascending(p => p.Name);//  
using (var cursor = collection.FindAsync(filter, findop).Result)
{
 var items = cursor.ToList();
 foreach (var item in items)
 {
 Console.WriteLine(item.Age + item.Name);
 }
}
  정렬 규칙 findop.Sort=Builders.So.Ascending(p=>p.Age).Ascending(p=>p.Name);
5.JSon 형식 추출 법

//json    
IMongoCollection<BsonDocument> bsonDoc = database.GetCollection<BsonDocument>("Persons");
var filter4 = Builders<BsonDocument>.Filter.Gt("Age", 5);
using (var persons=await bsonDoc.FindAsync(filter4)) 
{
 foreach (var item in await persons.ToListAsync())
 {
 Console.WriteLine(item.GetValue("Name").AsString);
 }
}
6.업데이트 작업

IMongoCollection<Person> upPersons = database.GetCollection<Person>("Persons");
var upFilter = Builders<Person>.Filter.Where(p => p.Age>20);//    
var update = Builders<Person>.Update.Set(c => c.Name, "test2");//    , Name   test2
upPersons.UpdateMany(filter, update);
7、삭제 작업

IMongoCollection<Person> teachers = database.GetCollection<Person>("Persons");
var deletefilter = Builders<Person>.Filter.Where(p => p.Id == 1);
teachers.DeleteMany(deletefilter);
 Update 를 사용 할 기회 가 적 습 니 다.Update 를 자주 사용 하면 잘못 사용 한 것 을 의미 할 수 있 습 니 다.join,group by,장면 이 틀 렸 다 고 생각 하지 마 세 요!
8.MongoDB 응용 장면
  로그 기록 시스템;장치 모니터링 데이터 의 저장;배 고 프 세 요?상품,상가 정보 저장 하기;사이트 평론 정보;파충류 가 기어 오 르 는 제3자 데이터 저장 하기;
  그러나 주문,금융 거래,게임 장비 등 관건 적 인 정 보 는 MongoDB 를 사용 하지 마 세 요.
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기