Mongodb - c# 드라이버로 특정 요소 포함 또는 제외
이 mongo 쿼리를 쿼리로 어떻게 변환합니까?C#의 EQ 문?
db.users.find({name: 'Bob'}, {'_id': 1});
다시 말해, 저는 모든 것을 C#으로 되돌리는 것을 원하지 않습니다. 제게 필요한 단 하나의 요소는 _id입니다.항상 그렇듯이 Mongo C# 드라이버 튜토리얼은 유용하지 않습니다.
업데이트: 새로운 드라이버 버전(1.6+)을 사용하면 linq 대신 다음과 같이 필드 이름 하드 코딩을 피할 수 있습니다.
var users = usersCollection.FindAllAs<T>()
.SetFields(Fields<T>.Include(e => e.Id, e => e.Name));
를 통해 할 수 있습니다.SetFields
mongodb 커서의 방법:
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();
드라이버의 v2.0부터 새로운 비동기 전용 API가 있습니다.이전 API는 새로운 API에 대한 차단 기능이므로 더 이상 사용해서는 안 됩니다.
특정 멤버를 포함하거나 제외하는 현재 권장되는 방법은Project
의 방법IFindFluent
에서 얻을 수 있습니다.Find
.
람다 식을 전달할 수 있습니다.
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();
업데이트와 달리 커서를 반환하고 모든 문서를 한 번에 로드하지 않는 투영을 사용할 수 있습니다.또한 반환되는 문서 수에 대한 정렬 순서와 제한을 설정할 수 있습니다.
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...
}
}
}
여기에 단지 그것을 검색하는 간단한 방법이 있습니다.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라는 mongodb 래퍼 라이브러리를 사용하고 있습니다.엔티티
언급URL : https://stackoverflow.com/questions/8448179/mongodb-include-or-exclude-certain-elements-with-c-sharp-driver
'programing' 카테고리의 다른 글
R 데이터 프레임에 행을 추가하는 방법 (0) | 2023.07.02 |
---|---|
Spring @RestController 사용자 지정 JSON 역직렬화기 (0) | 2023.07.02 |
C# Excel Interop:값을 텍스트로 저장하는 셀 형식 지정 방법 (0) | 2023.07.02 |
maven 3.8.5가 있는 intelij Idea에서 Springboot 2.7 프로젝트를 가져오는 중 오류 발생했습니다. (0) | 2023.07.02 |
Pandas DataFrame에서 Parquet 파일을 읽는 방법은 무엇입니까? (0) | 2023.06.27 |