首页 > 解决方案 > MongoDB 使用 C# 驱动程序替换数组内的数组

问题描述

我需要替换“baz”的内容。

{
  "_id" : ObjectId("6058f722e9e41a3d243258dc"),
  "fooName" : "foo1",
  "fooCode" : 1,
  "bar" : [
    {
      "barCode" : "123",
      "barName" : "Rick's Cafe",
      "baz" : [
        {
          "bazId" : "00",
          "bazDescription" : "Ilsa"
        },
        {
          "bazId" : "21",
          "bazDescription" : "Victor"
        }
      ]
    }
  ]
}

我从 UpdateOneAsync 和过滤器开始

Expression<Func<Foo, bool>> filter =
  f => f.fooCode == 1 &&
  f.Bar.Any(b => s.BarCode == "123")

一旦我开始输入更新语句

Builders<Foo>.Update.Set(f => ??? , newBazArray);

我意识到我可能做错了。我应该如何更换阵列 baz?

标签: c#mongodbmongodb-query

解决方案


你应该可以使用这个:

f => f.Bar[-1].baz

where[-1]相当于 Mongo 查询中的位置运算符 ($)。


推荐阅读