2017-02-16 13 views
2

だから、私は、これら2つのモデルがあり、もう一つは最初の1への参照を含める必要があります。MongoDBの別のドキュメントへの参照を追加する| mongocsharpdriver

モデル1

public class Model1 { 
    [BsonId] 
    public ObjectId Model1Id { get; set; } 
    ///etc 
} 

モデル2

public class Model2 { 
    [BsonId] 
    public ObjectId Model2Id { get; set; } 
    public ObjectId Model1Id { get; set; } 
    ///etc 
} 

、私は最初のものを保存し、次いで第2の1の参照、参照ショーを更新しようObjectId("000000000000000000000000")

としてデータベースにこれは私がやっているものです:

ctx.Model1.InsertOne(model1); //after this a real ObjectId is saved to the DB 

foreach (var m2 in model2) 
{ 
    m2.Model1Id = model1.Model1Id; //this shows as ObjectId("000000000000000000000000") 
} 

ctx.Model2.InsertMany(model2); 

どうすればいいですか?おかげ

答えて

0

OK。私は方法を発見しました。私はそれが最善の方法であるかどうかはわかりません。しかし、他の誰かが将来的により良い答えを投稿するかもしれません。

BsonId以外にObjectIdBSONの中に保存する方法はありません(この声明が間違っている場合は、私に修正してください)。したがって、このOne-to-OneまたはOne-to-Manyの関係をmongocsharpdriverとするには、Model2.Model1IdObjectIdの代わりにstringに変更しました。

次のようにワークフローは次のとおりです。

私はモデルの一つで新しい[BsonID]を作成するObjectId.GenerateNewId()と呼ばれます。

私は呼び出すことにより、第2の1への参照を更新しました。 ModelID.toString()

他のドキュメントで参照されているドキュメントの1つを探したい場合は、文字列を取得してnew ObjectId(string)を呼び出すクエリを作成するだけで、探している参照オブジェクトが得られますために。

関連する問題