![](/img/trans.png)
[英]How do you update multiple field using Update.Set in MongoDB using official c# driver?
[英]How do I programmatically set the sort field on a MongoDB query using the C# driver?
我有一個 Tool 對象的集合,我想選擇性地過濾這些對象,然后返回到網頁上的分頁表中。 我已經讓它與過濾器和分頁一起工作,但我在排序方面遇到了麻煩。 我正在使用 Angular Material 表,它允許用戶在運行時選擇排序字段和方向。
使用 MongoDB C# 驅動程序,我構建了一組與過濾器匹配的工具(fo = find options = 不區分大小寫)。 Skip 和 Limit 提供分頁 - 我知道這對於大集合不一定有效,這不是這里的問題 - ToList 將其發送到 API。
tools = _tools.Find<Tool>(theFilter, fo)
.Sort(Builders<Tool>.Sort.Descending(x => x.Description))
.Skip(pageNo * pageSize)
.Limit(pageSize)
.ToList();
在該示例中,Sort 調用按描述字段按降序正確對集合進行排序。 我需要能夠在運行時選擇不同的字段(例如x.id
、 x.Name
、 x.location
、 x.whatever
),並且能夠在降序和升序之間切換。
嘗試使用 MongoDB 的語法:
.Sort("{ description: -1}")
失敗,嘗試使用字段名稱構建 SortDefinition 對象也是如此:
private SortDefinition<T> BuildSortDefinition<T>(string fieldName, string sortDirection)
{
FieldDefinition<T> theField = new StringFieldDefinition<T>(fieldName);
SortDefinition<T> theSort;
if (sortDirection.ToLower() == "desc")
theSort = Builders<T>.Sort.Descending(theField);
else
theSort = Builders<T>.Sort.Ascending(theField);
return theSort;
}
如果我使用 lambda 表達式,我只能使 Sort 工作。 如何修復 lambda 表達式以使用可配置字段; 或在這種情況下正確使用.Sort
以使用可配置字段?
我的問題是在搜索字段中使用了錯誤的大小寫 - “描述”而不是“描述”。 一旦我通過了正確的案例,它就可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.