如何在 MongoDB C# 驱动程序版本 2 中使用 $ 位置运算符
How to use $ positional operator in MongoDB C# driver version 2
我需要从文档的数组子文档中更新一个元素的字段。
MongoDB 有 $ 位置运算符来执行此操作。但是在 MongoDB C# 驱动程序版本 2 中似乎不支持此运算符。
我怎样才能做到这一点?
文件:
{ "_id" : 1, "grades" : [ 80, 85, 90 ] }
{ "_id" : 2, "grades" : [ 88, 90, 92 ] }
{ "_id" : 3, "grades" : [ 85, 100, 90 ] }
预期查询:
db.students.update(
{ _id: 1, grades: 80 },
{ $set: { "grades.$" : 82 } }
)
你可以试试这个。
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);
我需要从文档的数组子文档中更新一个元素的字段。
MongoDB 有 $ 位置运算符来执行此操作。但是在 MongoDB C# 驱动程序版本 2 中似乎不支持此运算符。
我怎样才能做到这一点?
文件:
{ "_id" : 1, "grades" : [ 80, 85, 90 ] }
{ "_id" : 2, "grades" : [ 88, 90, 92 ] }
{ "_id" : 3, "grades" : [ 85, 100, 90 ] }
预期查询:
db.students.update(
{ _id: 1, grades: 80 },
{ $set: { "grades.$" : 82 } }
)
你可以试试这个。
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);