2012-04-13 3 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

+0

私は文書内でサブリスト(申し訳ありませんが、私のmongodb用語知識ベースはまだかなり緑色です)を作成すると思います。 – CodeSlinger512

答えて

1

タイプストリングのリストをmongoデータベースに入れようとしています。 Mongoに何かを追加するには、Bsonオブジェクトでなければならないか、カスタムオブジェクトを作成してプロパティをマップして、MongoがあなたのオブジェクトをBSONに変換する方法を知っている必要があります。

+1

答えを補足するには、BsonDocumentを作成し、BsonArrayを対応するキーとともに追加する必要があります。詳細は、ドキュメントを参照してください:http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial#CSharpDriverTutorial-TBSONLibrary – Ren

1

コレクションに挿入されるトップレベルのオブジェクトは、BSONドキュメント(BSON配列ではありません)にマップするオブジェクトである必要があります。

また、最上位レベルのオブジェクトには必ずIdフィールド(_idという名前の要素に対応)が必要です。

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

、その後、あなたがこのようなデータを挿入できます:Idがなること

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

は注意をあなたがクラスにこのような何かを定義し、データベースにデータを挿入するには

自動的に値が割り当てられます(IDがObjectIdのような型であり、一意の値の自動生成をサポートしている限り)。

関連する問題