2016-09-27 87 views
2

我正在嘗試爲使用mongodb和C#的REST API構建搜索功能。

我想在查詢中使用$的mongodb過濾器。我知道硬編碼過濾器字符串{\"name\":{$in:[/^First/]}}找到記錄,但我無法在使用Filter.In時獲得相同的功能。

在我蒙戈回購我有一個GetAsync這需要在name並執行以下操作:

return await Context 
       .Collection<TChronosDocument>() 
       .Find(
        //"{\"name\":{$in:[/^First/]}}") 
        Builders<TChronosDocument>.Filter.In(x => name, ToRegex(name))) 
       .Sort(SortDefinition) 
       .Page(offset, limit) 
       .ToListAsync() 
       .ToAggregate(Mapper); 

ToRegex功能只是像First一個字符串轉換成一個字符串[]像[/^First/]由過濾器使用。

這裏的問題是,這將返回一個空數組的結果,而不是正確匹配條目name : "First Agency"

我不確定這是否是在C#中實現$ in功能的正確方法,或者如果我在這裏做了其他錯誤。

(PS:我試過使用Find(Builders<TChronosDocument>.Filter.In(name, ToRegex(name)))也沒有運氣)。

回答

0

嘗試

Builders<TChronosDocument>.Filter.ElemMatch(x => name, ToRegex(name)) 
更換

Builders<TChronosDocument>.Filter.In(x => name, ToRegex(name)))