2011-10-09 4 views
12

만 지정된 필드 :받기 I이 예 읽고

이하는을 선택 B 사용자는 어디 나이 = 33 db.users.find ({연령 : 33}, {A : 1, B : 1})

하지만 C#으로 변환 할 수 없습니다. 누구든지 나를 도울 수 있습니까?

답변

21

당신은 전체 예제 아래 SetFields 방법 클래스 MongoCursor의를 사용하여 수행 할 수 있습니다

var server = MongoServer.Create(connectionString); 
var db = _server.GetDatabase("dbName"); 
db.GetCollection("users"); 

var cursor = Photos.FindAs<DocType>(Query.EQ("age", 33)); 
cursor.SetFields(Fields.Include("a", "b")); 
var items = cursor.ToList(); 
13

나는 새로운 C#을 드라이버 (2.2)

var mongoClient = new MongoClient(""mongodb://127.0.0.1:27017""); 
var database = mongoClient.GetDatabase("databaseName"); 
IMongoCollection<Users> _collection = database.GetCollection<Users>("Users"); 
var condition = Builders<Users>.Filter.Eq(p => p.age, 33); 
var fields = Builders<Users>.Projection.Include(p => p.a).Include(p => p.b); 
var results= _collection.Find(condition).Project<Users>(fields).ToList().AsQueryable(); 
+1

@HeoDatHades - 위의 솔루션은'FindAsync'에서 작동하지 않습니다. 'fields'와'FindAsync' 둘 다 제안 해 주시겠습니까? – prog1011

+1

@ prog1011'FindAsync'를 아직 사용하지 않았지만 https://www.codementor.io/pmbanugo/working-with-mongodb-in-net-2-retrieving-mrlbeanm5에서이 기사를 발견했습니다. 더 많은 것을 읽고 알아낼 수 있습니다. –

0
//create user class 
//(not sure how your class looks like) 

public class User 
{ 
[DataMember(Name = "age")] 
public int age; 
[DataMember(Name = "a")] 
public string int a; 
[DataMember(Name = "b")] 
public string int b; 
} 

//then you can use LINQ easily 

var server = MongoServer.Create(connectionString); 
var db = _server.GetDatabase("dbName"); 
var usersCollection = server.GetCollection<User>("users"); 

var filteredCollection = usersCollection.AsQueryable().Where(x=> x.age < 33).Where(x=> x.a != null).Contains(x=> x.b != null); 
0

를 사용하여 아래의 쿼리를 번역 한 익명 클래스를 사용할 수 있습니다

public class User 
    { 
     public int age; 
     public string a; 
     public string b; 
    } 

    var collection = db.GetCollection<User>("Users"); 
    var results = collection.Find(Builders<User>.Filter.Eq(user => user.age, 33)) 
      .Project(u => new { u.a, u.b }).ToList();