如何在 MongoDB C# 驱动程序版本 2 中使用 $ 位置运算符
Posted
技术标签:
【中文标题】如何在 MongoDB C# 驱动程序版本 2 中使用 $ 位置运算符【英文标题】:How to use $ positional operator in MongoDB C# driver version 2 【发布时间】:2017-07-12 19:41:21 【问题描述】:我需要从一个文档的数组子文档中更新一个元素的字段。
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
)
【问题讨论】:
【参考方案1】:你可以试试这样的。
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 C# 驱动程序版本 2 中使用 $ 位置运算符的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 C# 驱动程序更新 MongoDB 数组中的子文档
从 C# 驱动程序执行 MongoDB Eval 函数(MongoDB 版本 2.4)
如何在 2.1 MongoDB C# 驱动程序中使用地理空间查询?