MongoDB的从子文档中删除子文档文件 [英] MongoDB remove a subdocument document from a subdocument

查看:815
本文介绍了MongoDB的从子文档中删除子文档文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用MongoDB的10gen的C#司机和我想从子文档中删除子文档。我不知道该怎么做。

I use 10gen C# driver for MongoDB and I would like to remove a subdocument from a subdocument. I don't know how to do it.

这里是什么样子我的文档

Here's an example of what looks like my document

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

和我要删除的覆盖这名字是PathDirectory。这是我写的查询,但它不工作。我没有错误。

And I want to delete the Override which Name is PathDirectory. Here's the query I wrote but it doesn't work. I have no error.

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));



感谢您的帮助。
约翰

Thanks for any help. John

推荐答案

您应该使用$拉操作删除项从阵列。

you should to use $pull operation for delete item from array.

        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);

这篇关于MongoDB的从子文档中删除子文档文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆