【问题标题】:How to use $ positional operator in MongoDB C# driver version 2如何在 MongoDB C# 驱动程序版本 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 } }
   )

【问题讨论】:

    标签: mongodb mongodb-query mongodb-.net-driver


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      • 1970-01-01
      • 1970-01-01
      • 2019-03-01
      • 2016-04-06
      • 2018-08-27
      相关资源
      最近更新 更多