2014-07-21 40 views
2

我使用c#mongodb驅動程序來執行查詢。如果我使用db.GetCollection.Distinct()函數,然後調用MongoCursor collection.FindAs(query),我會得到一個錯誤:'System.Collections.Generic.IEnumerable<applition>' does not contain a definition for 'FindAs' and no extension method 'FindAs' accepting a first argument of type 'System.Collections.Generic.IEnumerable<application>' could be found.如何使用c#MongoCursor獲取不同的值?

有誰人知道如何調用獨特的功能在使用MongoDB的光標和IMongoQuery的情況下?先謝謝你。

回答

0

我已經使用runCommand方法完成了所需的結果。 我有一個名爲「capped」的集合。其中有記錄帶有稱爲「x」的字段。我在集合中插入了不同的值,其中有多個值27. 下面的Javascript語句顯示「我希望集合上的不同值被上限,其中distinc鍵是列'x',我正在查詢其中x是27「。

在Javascript中,它看起來像這樣:

db.runCommand({ "distinct":"capped", "query" : { "x" : 27 }, "key":"x" });

在C#中,它看起來有點類似:

 CommandDocument distinctCmd = new CommandDocument{ 
      {"distinct", "capped"}, 
      {"query", new BsonDocument("x", 27)}, 
      {"key", "x"}   }; 
     CommandResult r = database.RunCommand(distinctCmd); 
+0

謝謝。你使用Javascript mongdoDB驅動程序?我認爲c#與此不同。我所做的是重寫我的對象中的.eqauls函數,並使用mongo光標逐一處理它們,這很慢。 – shuai

+0

我在答案中提供的C#代碼段是我在C#程序中使用的實際代碼 - 它編譯並運行。我測試過了。 – alernerdev

+0

謝謝,它的工作原理。但問題是我爲我的mongoDB遊標調用了IMongoQuery(多個查詢的組合)。 CommandDocument不支持此功能,並且每個文檔中有數百個字段。如何處理? – shuai