MongoDB용 C# 드라이버를 사용하여 주문 또는 정렬을 지정하는 방법은 무엇입니까?
C# 드라이버에게 정렬 순서가 무엇인지 알려주어 문서 모음 서버 측에서 정렬하는 방법을 알아보려고 하는데, 아직 해당 구성을 지원하지 않는 것 같습니다.
이것을 다른 방법으로 하는 것이 가능합니까?
MongoCursor 클래스에서 SetSortOrder 메서드를 사용하여 이 작업을 수행할 수도 있습니다.
db["collection"].Find().SetSortOrder(SortBy.Ascending("SortByMe"));
Chris의 답변에 덧붙이자면, C# Driver 2.x에서는 이제 다음과 같이 완료되었습니다.SortBy
,SortByDescending
,ThenBy
&ThenByDescending
collection.Find(bson => true).SortBy(bson => bson["SortByMeAscending"]).ThenByDescending(bson => bson["ThenByMeDescending"]).ToListAsync()
이제 그것은 린크를 훨씬 더 많이 닮았습니다.
http://mongodb.github.io/mongo-csharp-driver/2.0/reference/driver/crud/reading/ #http://sort
비동기 메서드의 경우:
var filter = Builders<BsonDocument>.Filter.Empty;
var sort = Builders<BsonDocument>.Sort.Ascending("time");
collection.FindAsync(filter, new FindOptions<BsonDocument, BsonDocument>()
{
Sort = sort
});
MongoDB에서 api를 간단하게 사용할 수 있습니다.드라이버 2.5.0
var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("Blog");
var list = database.GetCollection<BlogPost>("BlogPost")
.Find(e => e.Deleted == false)
.SortByDescending(e => e.CreatedOn)
.Limit(20)
.ToList();
여러 필드에서 정렬하려면 다음을 사용합니다.
db["collection"].Find().SetSortOrder(SortBy.Ascending("SortByMe").Descending("AndByMe");
linq를 사용하려는 경우:
설명서에서: (http://docs.mongodb.org/ecosystem/tutorial/use-linq-queries-with-csharp-driver/) .
var query=
(from c in collection.AsQueryable<C>()
orderby c.X
select c)
foreach (var d in query)
{
// process your documents
}
원하는 경우 다음과 같이 결과를 제한할 수도 있습니다.
var query=
(from c in collection.AsQueryable<C>()
orderby c.X descending
select c).Take(1);
정렬할 필드에 인덱스가 있다는 것만 기억하세요.
기존 C# 드라이버를 사용하여 이를 수행하는 방법은 다음과 같습니다.
db["collection"].Find(new Document().Append("query",
new Document()).Append("orderby",
new Document().Append(name:1).Append(age,-1)));
여기 있는 샘 코더가 내게 관심을 갖게 한 것은
다음으로 정렬을 적용할 수 있습니다.SortDefinition
다음과 같이:
FilterDefinition<User> filter = Builders<User>.Filter.Eq(a => a.Deleted , false);
SortDefinition<User> sort = Builders<User>.Sort.Descending(a => a.Id);
List<User> result = _dbContext.Users.Find(filter).Sort(sort).Limit(10).ToList();
@FindAsync에 대한 DmitryZyr의 응답이 작동하지 않았습니다.근데 이거는.
var sortDefinition = new SortDefinitionBuilder<ImmutableLog>().Descending("date");
var findOptions = new FindOptions<ImmutableLog>() {Sort = sortDefinition};
await this.Collection.FindAsync(new BsonDocument(), findOptions);
저는 현재 API 버전 MongoDB를 사용하고 있습니다.드라이버 2.8.1.필요한 경우 내림차순 정렬이 있는 개체 목록을 반환하기 위해 호출하는 메서드는 다음과 같습니다.
public static IEnumerable<TEntity> GetDocumentsForCollection(
IMongoDatabase database,
string collectionName,
FilterDefinition<TEntity> query,
string databaseCollectionKeyToSortOnDescending)
{
var _mongoSettings = new MongoCollectionSettings();
_mongoSettings.GuidRepresentation = GuidRepresentation.Standard;
var _collection = database.GetCollection<TEntity>(collectionName, _mongoSettings);
if (string.IsNullOrEmpty(databaseCollectionKeyToSortOnDescending))
{
return _collection.Find(query).ToList();
}
return _collection.Find<TEntity>(query).Sort(Builders<TEntity>.Sort.Descending(databaseCollectionKeyToSortOnDescending)).ToList();
}
나는 C#을 모르기 때문에 자바스크립트로 이것을 하고 있지만, C# 드라이버와 동일한 구문을 가져야 합니다.
쿼리가 다음과 같은 경우:
db.c.find({"foo" : "bar"})
"baz" 오름차순으로 정렬하고 쿼리를 "baz" 필드로 묶은 다음 "order by" 필드를 추가합니다.
db.c.find({"query" : {"foo" : "bar"}, "orderby" : {"baz" : 1}})
내림차순 정렬의 경우 -1을 사용합니다.
언급URL : https://stackoverflow.com/questions/2123529/how-to-specify-an-order-or-sort-using-the-c-sharp-driver-for-mongodb
'source' 카테고리의 다른 글
SCHEMA에서 GRANT USAGE는 정확히 어떤 역할을 합니까? (0) | 2023.05.31 |
---|---|
Fragments에서 BackPressed()를 구현하는 방법은 무엇입니까? (0) | 2023.05.31 |
응용 프로그램을 업데이트하려고 할 때 [INSTALL_FAILED_ALREADY_EXIST] 오류가 발생함 (0) | 2023.05.31 |
SQL 대비 Azure 스토리지 테이블 (0) | 2023.05.31 |
노드에서 '_id'로 MongoDB 항목을 검색하는 올바른 방법 (0) | 2023.05.31 |