0

를 사용하여 MongoDB에서보기 유형 컬렉션에서 열을 얻을 수 있습니다. 일반 콜렉션은 작동하지만 뷰 유형 콜렉션이 작동하지 않습니다. 그래서 컬렉션의 뷰 유형에서 열 이름이 필요합니다. 상기 이미지 "AnalyticsView"의어떻게 내가 MongoDB의 컬렉션에서 열을 얻기 위해이 코드를 사용하고</p> <p>의 C#을 사용하여 MongoDB에서보기 유형 컬렉션에서 열을 얻을 수있는 방법 C#을

var client = new MongoClient(Connstr); 
var DB = client.GetDatabase(dbname);   
var collection = DB.GetCollection<BsonDocument>(tablename); 
var cursor = collection.FindAsync(new 
    BsonDocument()).Result.ToListAsync().Result;   
foreach (BsonDocument document in cursor) 
{ 
    Type type; 
    var typestring = Enum.GetName(typeof(BsonType), 
    column.Value.BsonType); 
    Columnlist.Add(column.Name); 
} 

enter image description here

는 뷰 타입 컬렉션이다.

MongoDb 드라이버를 사용하여 열을 가져 왔습니다.

+0

도망? – Mahdi

+0

@Mahdi "보기 유형이 찾기 방법을 지원하지 않습니다"이것은 오류입니다. Sop 내가보기 형식 컬렉션에서 레코드를 얻기위한 솔루션이 필요해 .. :) – Ramprasathselvam

답변

1

문서에 따르면

뷰는 읽기 전용 ; 뷰에 대한 쓰기 작업은 [throw] 오류가됩니다. 다음 판독 동작은 뷰를 지원할 수

  • db.collection.find()
  • db.collection.findOne()
  • db.collection.aggregate()
  • db.collection.count을()
  • db.collection.distinct()는

그래서, 나는을 연결하는 뷰를 생성 이름은 employee 컬렉션에있는 직원의 이름과 성입니다. 보기 예 here을 찾을 수 있습니다. 그럼 다음과 같이 (내보기 Fullname 인 하나 개의 속성이있을 것이다)보기 내 코드에서 클래스를 추가 : 나머지는 다음과 같이 이루어집니다

public class EmployeeName 
{ 
    [BsonElement("fullname")] 
    public string Fullname { get; set; } 
} 

: 오류는 무엇

var context = new Context(); 
var builder = Builders<EmployeeName>.Filter; 
var filter = builder.Eq(x => x.Fullname, "John Smith"); 
var test = context.EmployeeView.Find(filter).SingleOrDefault();