sql >> データベース >  >> NoSQL >> MongoDB

C#ドライバーを使用してmongodbのサブドキュメントを更新/削除します

    サブドキュメントを更新するには、次を使用できます:

    var update = Update.Set("AnswerList.$.OptionName", "new").Set("AnswerList.$.VoteCount", 5);
    collection.Update(Query.And(Query.EQ("_id", new BsonObjectId("50f3c313f216ff18c01d1eb0")), Query.EQ("AnswerList.OptionId", "1")), update);
    

    プロファイラー:

    "query" : { "_id" : ObjectId("50f3c313f216ff18c01d1eb0"), "AnswerList.OptionId" : "1" },
    "updateobj" : { "$set" : { "AnswerList.$.OptionName" : "new", "AnswerList.$.VoteCount" : 5 } }
    

    そして削除するには:

    var pull = Update<Vote>.Pull(x => x.AnswerList, builder => builder.EQ(q => q.OptionId, "2"));
    collection.Update(Query.And(Query.EQ("_id", new BsonObjectId("50f3c313f216ff18c01d1eb0")), Query.EQ("AnswerList.OptionId", "2")), pull);
    

    プロファイラー:

    "query" : { "_id" : ObjectId("50f3c313f216ff18c01d1eb0"), "AnswerList.OptionId" : "2" },
    "updateobj" : { "$pull" : { "AnswerList" : { "OptionId" : "2" } } }
    

    もう1つの方法は、変更された子コレクションで親ドキュメントを更新することです。



    1. 複合インデックス付きのMongo$in

    2. docker経由のMongoDBとDocker-認証エラーを作成し、dbを初期化しない

    3. 新しいmongoC#ドライバーでfindAllを実行し、同期させる方法

    4. MongoDBデータの整合性