相关疑难解决方法(0)

MongoDB .Net驱动2.0拉(删除元素)

你能用2.0驱动程序帮助我正确运行"拉(删除)".

我有一个这样的集合,我想删除第一个跟随者字段命名为fethiye的追随者.

{
  "_id": ObjectId("554e05dfc90d3d4dfcaa2aea"),
  "username": "bodrum",
  "followerList": [
    {
      "_id": ObjectId("554e0625a51586362c33c6df"),
      "follower": "fethiye",
      "avatar": "fethiye.png"
    },
    {
      "_id": ObjectId("554e0625a51586362c33c6df"),
      "follower": "izmir",
      "avatar": "izmir.png"
    }
  ]
} 
Run Code Online (Sandbox Code Playgroud)

我该如何修复此查询?

var filter = new BsonDocument("username", "bodrum");
var update = Builders<Person>.Update.Pull("followerList:follower", "fethiye");
Person pr = collection.FindOneAndUpdateAsync(filter, update).Result;
Run Code Online (Sandbox Code Playgroud)

谢谢.

c# mongodb mongodb-.net-driver

14
推荐指数
2
解决办法
1万
查看次数

在更新文档中的数组时,如何在MongoDB和C#中使用$ push update修饰符

我在mongo shell中运行以下代码:

db.unicorns.insert({name:  'Dunx',  loves:  ['grape',  'watermelon']});
Run Code Online (Sandbox Code Playgroud)

现在我在MongoDB集合中有这样的东西:

{name: 'Dunx', loves: ['grape', 'watermelon']}
Run Code Online (Sandbox Code Playgroud)

你可以看到loves一个数组.

如何使用官方C#驱动程序编写C#代码,执行以下操作:

db.unicorns.update({name: 'Aurora'}, {$push: {loves: 'sugar'}})
Run Code Online (Sandbox Code Playgroud)

上面的代码在mongo shell中运行得很好.

c# mongodb mongodb-.net-driver

13
推荐指数
2
解决办法
9181
查看次数

如何使用C#MongoDB.Driver更新深度嵌套的数组?

我有这样的模型:

{  
   "_id":"5b90eea8c02e062be2888446",
   "storeGuid":"e97d4730-9b8a-49ed-be87-caf4054439aa",
   "storeId":"0",
   "storeDbName":"0",
   "tenant":"dev",
   "configGroup":[  
      {  
         "groupName":"peopleCounter",
         "config":[  
            {  
               "key":"averageWaitPeriodTime",
               "value":"60",
            }
         ]
      },
      {  
         "groupName":"sessionMonitor",
         "config":[  
            {  
               "key":"testKey1",
               "value":"987",
            },
            {  
               "key":"testKey2",
               "value":"123",
            }
         ]
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

我试图更新value"key":"testKey2"

我有这样的更新声明:

await coll.UpdateOneAsync(
    x => x.StoreGuid == storeGuid
         && x.ConfigGroup.Any(y => y.GroupName == groupName
                                   && y.Config.Any(z => z.Key == model.Key)),
    Builders<StoreModel>.Update.Set(x => x.ConfigGroup[-1].Config[-1].Value, model.Value));
Run Code Online (Sandbox Code Playgroud)

例如,当我尝试groupName使用此类过滤器进行更新时,ConfigGroup[-1]它会起作用。

但是在我们拥有的情况下,ConfigGroup[-1].Config[-1]它不起作用。

我知道两个选项如何更新值:

  • 只需使用更新整个列表 ConfigGroup[-1].Config
  • 或为过滤器指定具体索引,例如 ConfigGroup[configGroupIndex].Config[configKeyIndex].Value

但是我想知道为什么它不适用于-1索引。以及如何正确执行。

请使用c#MongoDB.Driver回答。

提前致谢。

c# mongodb mongodb-.net-driver

5
推荐指数
1
解决办法
1225
查看次数

如何更新数组中嵌套的数组中的项目

我通过最新的 C# 驱动程序(此时为 v2.7.0)使用 MongoDB 4.0。我有一份文件,其中有Options和。换句话说,库存数组嵌套在选项数组中。如何了解库存水平并仅更新库存?OptionsInventory

以下是我的 JSON 格式文档的样子:

{
  "Options": [
    {
      "Id": 1,
      "Description": "This is one option",
      "Inventory": [
        {
          "Id": 1,
          "Name": "Box of stuff"
        },
        {
          "Id": 2,
          "Name": "Another box of stuff"
        }
      ]
    },
    {
      "Id": 2,
      "Description": "This a second option",
      "Inventory": [
        {
          "Id": 1,
          "Name": "Box of stuff"
        },
        {
          "Id": 2,
          "Name": "Another box of stuff"
        }
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

使用 C# 驱动程序,如果我知道选项的 Id …

c# mongodb

3
推荐指数
1
解决办法
1180
查看次数

标签 统计

c# ×4

mongodb ×4

mongodb-.net-driver ×3