.Net 에서 MoongoDB 의 간단 한 호출 그래 픽 튜 토리 얼
본 고 는 주로.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=Builders5.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 를 사용 하지 마 세 요.
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
AS를 통한 Module 개발1. ModuleLoader 사용 2. IModuleInfo 사용 ASModuleOne 모듈...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.