2015-01-25 12 views
0

mongodb 및 C#을 사용하여 컬렉션의 모든 문서를 나열하려고합니다. 삽입 및 삭제 성능이 좋습니다. 하지만 테이블 (컬렉션) mongo DB에있는 모든 항목을 나열하려고하면 초당 3000 행을 선택하십시오. (그런데 SQL Server는 초당 200k를 표현하며, mysql 111k, oracle은 111k, postgresql 91k, firebird 63k를 표현합니다.MongoDB에서 데이터 그리드 뷰로 작업 선택 #

이것은 내 선택 코드입니다.

var connectionString = "mongodb://localhost"; 
var client = new MongoClient(connectionString); 
var server = client.GetServer(); 
var database = server.GetDatabase("testdb1"); 
var collection = database.GetCollection<Entity>("tablo1"); 

var entity = collection.FindAll(); 

foreach (var deger in collection.FindAll()) 
{ 
    string[] row1 = new string[] { deger.deger1.ToString() }; 
    dataGridView1.Rows.Add(row1); 
    Application.DoEvents(); 
} 

누구든지 datagridview에 모든 레코드를 나열하는 더 좋은 방법을 알고 있습니까?

다른 모든 데이터베이스 시스템과 함께 나열하는 방법입니다.

NpgsqlDataAdapter dataadapter = new NpgsqlDataAdapter("SELECT * FROM tablo1", baglanti1); 
DataSet ds = new DataSet(); 
baglanti1.Open(); 
dataadapter.Fill(ds, "tablo1"); 
baglanti1.Close(); 
dataGridView1.DataSource = ds; 
dataGridView1.DataMember = "tablo1"; 

MongoDB에서 데이터 세트 및 데이터 어댑터를 사용할 수 있습니까?

+0

수집 tablo1는 색인가요? –

+0

번호 테이블/컬렉션의 색인을 추가하는 방법을 알고 계십니까? –

답변

0

해결되었습니다.

var connectionString = "mongodb://localhost"; 
var client = new MongoClient(connectionString); 
var server = client.GetServer(); 
var database = server.GetDatabase("testdb1"); 
var collection = database.GetCollection<Entity>("tablo1"); 

//var entity = collection.FindAll(); 

BindingList<Entity> doclist = new BindingList<Entity>(); 

foreach (var deger in collection.FindAll()) 
{ 
    doclist.Add(deger); 
    //string[] row1 = new string[] { deger.deger1.ToString() }; 
    //dataGridView1.Rows.Add(row1); 
    Application.DoEvents(); 
} 
dataGridView1.DataSource = doclist; 

내 엔티티 클래스

public class Entity 
{ 
    public ObjectId Id { get; set; } 
    public string deger1 { get; set; } 
} 

그리고 추가 이러한 라이브러리

using MongoDB.Driver; 
using MongoDB.Bson; 
using MongoDB.Driver.Linq; 
using System.ComponentModel; 

소스 Update mongodb database when datagridview is changed