簡體   English   中英

C#mongoDB不會更新數據庫中的數組

[英]C# mongoDB wont update array in database

我想更新我的mongoDB集合中的數組。 發布新文檔效果很好,但不會更新數組。 我的文檔結構為:

 var document = new BsonDocument
        {               
            { "post_title",  model.Title  },
            { "post_text",  model.Text  },
            { "post_author",  model.Author  },
            { "post_picture",  model.Picture  },
            { "post_comments",  new BsonArray()  },
        };

我的更新功能是:

[HttpPost]
    [Route("api/PostInfo/{Comment}")]
    public async Task Post(Comment comment)
    {
        try {
            BsonObjectId oldId = new BsonObjectId(new ObjectId(comment.id.ToString()));

            var mongoDbClient = new MongoClient("mongodb://127.0.0.1:27017");
            var mongoDbServer = mongoDbClient.GetDatabase("nmbp");
            var collection = mongoDbServer.GetCollection<PostInfo>("post");

            var filter = Builders<PostInfo>.Filter.Eq(e => e._id, oldId);
            var update = Builders<PostInfo>.Update.Push("post_comments", comment.comment);
            await collection.FindOneAndUpdateAsync(filter, update);
            var test = oldId.GetType();
        }
        catch
        {
        }
    }

調試時,我可以看到觸發了后控制器,並且注釋值正確,但是當我查看數據庫時,“ post_comments”數組的值為空。 catch塊中沒有引發任何錯誤。 難道我做錯了什么?

看起來問題出在這一行:

var filter = Builders<PostInfo>.Filter.Eq(e => e._id, oldId);

正確的應如下所示:

var filter = Builders<PostInfo>.Filter.Eq("_id", oldId);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM