2017-05-25 47 views
0

C#蒙戈錯誤:可有一個人幫我寫C#蒙戈查詢相當於SQL

Unsupported filter: ({document}{FILEDATE} > {document}{SPLITDATE}). 

SQL查詢:

SELECT * FROM CURRENT AS C WHERE C.FILEDATE > C.SPLITDATE 

C#代碼:

db.GetCollection<CollectionName>().AsQueryable() 
.Where(a => a.fileDate > a.splitDate) 
.Select(b => b.Name).Distinct().ToList() 
+0

什麼問題?您包含C# –

+0

我收到錯誤不支持的過濾器:({document} {FILEDATE}> {document} {SPLITDATE})。同時運行C#代碼 –

回答

1

我不知道是否有更好的方法來實現它,但是我通常使用Find語法,因爲它看起來比AsQueryable()更通用 - 但可能只是我。試試這個:

var collection = db.GetCollection<CollectionObject>(CollectionName); 
collection.Find(
    (FilterDefinition<CollectionObject>)"{ $where : \"this.fileDate > this.splitDate\" }" 
) 
.Project<CollectionObject>(Builders<CollectionObject>.Projection.Include(c => c.Name)) 
.ToEnumerable() 
.Select(c => c.Name) 
.Distinct() 
.ToList() 

像這樣的東西應該工作,雖然我被認爲相信$哪裏可能不是很有效。 請注意,其中的名稱是您的文檔上的名稱。

+0

謝謝john ..... –