【发布时间】:2016-01-18 01:02:23
【问题描述】:
我想更新我的 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_cmets”数组的值是空的。在 catch 块中不会引发错误。我做错了吗?
【问题讨论】: