c# - MongoDB 从子文档中删除子文档文档

标签 c# mongodb

我为 MongoDB 使用 10gen C# 驱动程序,我想从一个子文档中删除一个子文档。我不知道该怎么做。

这是一个看起来像我的文档的示例

{
  "_id": "binary_stuff",
  "Name": "MyApplication",
  "Settings": [
    {
      "_id": "binary_stuff",
      "Key": "ImportDirectory",
      "Value": "C:\data",
      "Overrides": [{
             "_id": "binary_stuff",
             "Name": "PathDirectory",
             "Value": "C:\anotherData"
       }]
    },
}

我想删除名称为 PathDirectory 的 Override。这是我写的查询,但它不起作用。我没有错误。

var query = Query.And(Query.EQ("_id", applicationId), Query.EQ("Settings.Key", "ImportDirectory"), Query.EQ("Settings.$.Overrides.Name", "PathDirectory"));
Run(database => database.Applications().Remove(query));

感谢您的帮助。 约翰

最佳答案

您应该使用 $pull 操作从数组中删除项目。

        var query = Query.And(Query.EQ("_id", applicationId),
                         Query.EQ("Settings.Key",  "ImportDirectory"));
        var update = Update.Pull("Settings.$.Overrides", new BsonDocument(){
            { "Name", "PathDirectory" }
        });
        database.Applications().Update(query, update);

关于c# - MongoDB 从子文档中删除子文档文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6584037/

相关文章:

c# - 把方法放在哪里。存储库上的服务层 ( BL )?

javascript - 运行 Node.js(在 Windows R2 服务器上): How can I reduce the amount of RAM that my grunt tasks consume?

java - MongoDB:查询有隐式限制(256)?

MongoDB $geoNear 聚合管道(使用查询选项并使用 $match 管道操作)给出不同的结果

c# - 如何从字符串转换为 XElement 对象

c# - 如何从 Byte 返回位

c# - 在哪里下载 .net 1.0 DLL

c# - 如何修复 asp.net 应用程序中的 MAC 错误?

java - MongoDb 带有版本化文档的重复键

performance - MongoDB 索引定义策略