far*_*ran 6 mongodb mongodb-query mongodb-.net-driver
我需要从文档的数组子文档更新一个元素的字段.
MongoDB有$ position操作符来执行此操作.但是在MongoDB C#驱动程序版本2中,似乎没有对此运算符的支持.
我怎样才能做到这一点?
文件:
{ "_id" : 1, "grades" : [ 80, 85, 90 ] }
{ "_id" : 2, "grades" : [ 88, 90, 92 ] }
{ "_id" : 3, "grades" : [ 85, 100, 90 ] }
Run Code Online (Sandbox Code Playgroud)
预期查询:
db.students.update(
{ _id: 1, grades: 80 },
{ $set: { "grades.$" : 82 } }
)
Run Code Online (Sandbox Code Playgroud)
你可以尝试这样的事情.
var builder = Builders<Student>.Filter;
var filter = builder.Eq(student=> student.Id, 1) & builder.ElemMatch(student => student.Grades, x => x == 80);
var builder = Builders<Student>.Update;
var update = builder.Set(student => student.Grades[-1], 82);
var result = collection.UpdateOne(filter, update);
Run Code Online (Sandbox Code Playgroud)
小智 6
我知道这是一个很晚的答案,但如果其他人遇到这个问题,我尝试使用 -1 索引尝试 s7vr 的答案,并得到一个指向 Mongo 的FirstMatchingElement方法的异常,这解决了我的问题。
filter因此,它与该答案相同,但替换update为类似的内容
var update = Builders<Student>.Update.Set(student => student.Grades.FirstMatchingElement(), 82);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
940 次 |
| 最近记录: |