【发布时间】:2017-06-16 18:23:49
【问题描述】:
我正在尝试通过匹配项目的“voteId”字段来更新 voteResultList 中的项目。
文件:
{
voteDocumentId: "....",
voteResultList: [
{
voteId: "....",
voteResult: "NA"
},
{
voteId: "....",
voteResult: "Against"
}
....
]
}
如果在 mongo 中我可以使用此命令并且它可以正常工作。
db.getCollection('VoteCollection').update({'voteDocumentId': '....', 'voteResultList.voteId': '....'},{'$set': {'voteResultList.$.voteResult': 'Approve'}})
在使用 csharp mongo 驱动程序的 csharp 代码中,我从这个 json 文档生成了一个过滤器 bson 文档
{'voteDocumentId': '....', 'voteResultList.voteId': '....'}
然后我通过这段代码生成了一个更新的 bson 文档
Builders<BsonDocument>.Update.Set("voteResultList.$.voteResult", "Approve")
但显然我做得不对,因为在调用 MongoCollection.UpdateMany(filter, update) 之后,mongoUpdateResult.ModifiedCount = 0,mongodb 文档中没有任何变化。
那么正确的做法是什么?
谢谢!
【问题讨论】: