我可以用這樣的表達式創建投影場定義:
var projection = Builders<Bar>.Projection.Expression(x => x.Foo)
我想對過濾器執行完全相同的操作:
var filter = Builders<Bar>.Filter.Expression(x => x.Foo == "10")
但我找不到辦法來做這件事。我想執行的操作FindOneAndUpdateAsync
支持表達式作為直接輸入,但我想將“硬編碼”過濾器與作為參數傳入的過濾器結合起來。這就是我現在不用表達式的方法:
var filter = Filter.Eq(x => x.Id, id); // Here I would like to write Filter.Expression(x => x.Id == id)
if (additionalFilter != null)
{
filter &= additionalFilter;
}
另外,我寧愿避免直接用“C#方式”組合表達式,因為它不太容易理解。
Mongo網絡驅動程序不支持
Filter.Expression
,如果要將任何值投射為ToList
,請參閱以下示例: