2012-04-13 41 views
0

我想添加一個簡單的字符串列表時,「子類必須實現GetDocumentID」:MongoDB的錯誤:試圖插入列表<string>

string[] misc = {"a", "b", "c", "d"}; 
List<string> myList = new List<string>(misc); 
mongo_collection.Insert(myList); 

它會返回錯誤:「子類必須實現GetDocumentID」

我嘗試這樣做,而不是:

mongo_collection.InsertBatch(myList); 

,但它導致了同樣的錯誤。必須有一種方法來插入它,而無需創建一個從實現GetDocumentID的List繼承的新類,對吧?

謝謝!

+0

你爲什麼認爲必須有一種方法來做到這一點?在將其放入'mongo_collection'後,如何檢索字符串列表? – phoog 2012-04-13 16:12:33

+0

我認爲它會在我的文檔中創建一個子列表(對不起,我的mongodb術語知識庫仍然很綠)。 – CodeSlinger512 2012-04-13 16:15:17

回答

1

您正在嘗試將類型爲String的List放入mongo數據庫中。爲了向Mongo添加內容,它必須是Bson對象,或者您必須創建一個自定義對象,並映射這些屬性,以便Mongo知道如何將對象轉換爲BSON。

+1

爲了補充答案,您需要創建一個BsonDocument並添加一個BsonArray(使用相應的鍵)。您可以參考文檔以獲取更多詳細信息:http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial#CSharpDriverTutorial-TheBSONLibrary – Ren 2012-04-13 17:29:06

1

插入到集合中的頂級對象必須是映射到BSON文檔(不是BSON陣列)的對象。

此外,頂級對象必須始終有一個Id字段(映射到名爲_id的元素)。

要插入數據到數據庫中,你會定義一個類是這樣的:

public class C 
{ 
    public ObjectId Id; 
    public List<string> Strings; 
} 

,然後你可以插入這樣的數據:

var document = new C(); 
document.Strings = new List<string> { "a", "b", "c", "d" }; 
collection.Insert(document); 

注意,ID將被自動分配一個值(只要Id的類型像支持自動生成唯一值的ObjectId)。