[MONGODB] MongoDB를이 - 포함 또는 C #을 드라이버 특정 요소를 제외
MONGODBMongoDB를이 - 포함 또는 C #을 드라이버 특정 요소를 제외
어떻게 C #에서 Query.EQ 문이 몽고 쿼리를 번역 할 것인가?
db.users.find({name: 'Bob'}, {'_id': 1});
그냥 하나 개의 요소 I 필요는 _id - 즉, 전 C #으로 돌아 모두를 원하지 않는다. 항상로서, 몽고 C # 드라이버 튜토리얼은 도움이되지 않습니다.
해결법
-
==============================
1.업데이트 : 새로운 드라이버 버전 (1.6) 대신 LINQ를 사용하여 하드 코딩 필드 이름을 피할 수로 :
업데이트 : 새로운 드라이버 버전 (1.6) 대신 LINQ를 사용하여 하드 코딩 필드 이름을 피할 수로 :
var users = usersCollection.FindAllAs<T>() .SetFields(Fields<T>.Include(e => e.Id, e => e.Name));
당신은 MongoDB의 커서의 SetFields 방법을 통해 그것을 할 수 있습니다 :
var users = usersCollection.FindAllAs<T>() .SetFields("_id") // include only _id .ToList();
기본 SetFields으로 지정된 필드가 포함되어 있습니다. 특정 분야를 제외해야하는 경우 사용할 수 있습니다 :
var users = usersCollection.FindAllAs<T>() .SetFields(Fields.Exclude("_id")) // exclude _id field .ToList();
또는 당신이 그들을 함께 사용할 수 있습니다 :
var users = usersCollection.FindAllAs<T>() .SetFields(Fields.Exclude("_id") // exclude _id field .Include("name")) // include name field .ToList();
-
==============================
2.드라이버의 2.0에서 시작하는 것은 새로운 비동기 전용 API가 있습니다. 이 새로운 API를 통해 차단 외관 그리고 사용되지 않습니다으로 이전 API는 더 이상 사용해서는 안된다.
드라이버의 2.0에서 시작하는 것은 새로운 비동기 전용 API가 있습니다. 이 새로운 API를 통해 차단 외관 그리고 사용되지 않습니다으로 이전 API는 더 이상 사용해서는 안된다.
현재 권장되는 방법은 다음을 포함하거나 특정 회원이 찾기에서 얻을 IFindFluent에 프로젝트 방법을 사용하는 것입니다 제외합니다.
당신도 람다 식을 전달할 수 있습니다 :
var result = await collection.Find(query).Project(hamster => hamster.Id).ToListAsync();
또는 프로젝션 빌더를 사용 :
var result = await collection.Find(query) .Project<Hamster>(Builders<Hamster>.Projection.Include(hamster => hamster.Id)) .ToListAsync();
var result = await collection.Find(query) .Project<Hamster>(Builders<Hamster>.Projection.Exclude(hamster => hamster.FirstName). Exclude(hamster => hamster.LastName)) .ToListAsync();
-
==============================
3.당신은 커서를 반환하고 달리 찾기 한 번에 모든 문서를로드하지 않는 투사와 FindAsync를 사용할 수있는 업데이트합니다. 또한 반환 된 문서의 수에 대한 정렬 순서 및 제한을 설정할 수 있습니다.
당신은 커서를 반환하고 달리 찾기 한 번에 모든 문서를로드하지 않는 투사와 FindAsync를 사용할 수있는 업데이트합니다. 또한 반환 된 문서의 수에 대한 정렬 순서 및 제한을 설정할 수 있습니다.
var findOptions = new FindOptions<BsonDocument>(); findOptions.Projection = "{'_id': 1}"; // Other options findOptions.Sort = Builders<BsonDocument>.Sort.Ascending("name"); findOptions.Limit = int.MaxValue; var collection = context.MongoDatabase.GetCollection<BsonDocument>("yourcollection"); using (var cursor = collection.FindSync("{name : 'Bob'}", options)) { while (cursor.MoveNext()) { var batch = cursor.Current; foreach (BsonDocument document in batch) { // do stuff... } } }
-
==============================
4.여기 당신이 필요로 바로 ID를 검색 할 수있는 간단한 방법이있다 :
여기 당신이 필요로 바로 ID를 검색 할 수있는 간단한 방법이있다 :
using MongoDB.Driver.Linq; using MongoDB.Entities; using System.Linq; namespace StackOverflow { public class User : Entity { public string Name { get; set; } } class Program { static void Main(string[] args) { new DB("test"); (new User { Name = "Bob" }).Save(); var id = DB.Collection<User>() .Where(u => u.Name == "Bob") .Select(u => u.ID) .First(); } } }
당신 마음, 위의 코드는 MongoDB.Entities라는 MongoDB를 래퍼 라이브러리를 사용하고 있습니다
from https://stackoverflow.com/questions/8448179/mongodb-include-or-exclude-certain-elements-with-c-sharp-driver by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 어떻게 몽고에서 포스트 태그를 구현하는 방법? (0) | 2019.12.22 |
---|---|
[MONGODB] 어떻게 mongodump하여 덤프 된 데이터를 사용 하는가? (0) | 2019.12.22 |
[MONGODB] MongoDB의 임베디드 문서 속성을 업데이트 (0) | 2019.12.22 |
[MONGODB] 몽고에서 샤딩 및 복제의 차이점은 무엇입니까? (0) | 2019.12.21 |
[MONGODB] 같은 MongoDB의 쿼리 수와 고유 한 카운트에서 그룹을 선택합니다 (0) | 2019.12.21 |