从mongodb中的嵌入文档中删除元素

时间:2015-11-21 10:05:35

标签: mongodb codeigniter

我正在使用mongodbcodeigniter.i想要从嵌入式文档中删除元素。我的收藏如下 -

{
"_id" : ObjectId("56503a272f170d30298b45ad"),
"gm_creation_time" : "2015-11-21 09:32:23",
"gm_favourites" : [
    {
        "gm_user_id" : "55f90ccf2f170d79048b4570",
        "gm_id" : "56503a272f170d30298b45ad",
        "date" : "2015-11-21 09:32:40"
    }
],
"gm_members" : [
    "560391de2f170d1e108b4574",
    "55f90ccf2f170d79048b4570"
],
"gm_name" : "Sunny@ccs",
"gm_owner" : "55f90ccf2f170d79048b4570",
"gm_photo" : null,
"gm_posts" : [ ],
"gm_type" : "1",
"gm_updation_time" : "2015-11-21 09:32:40"
}

如何根据gm_user_id从收藏夹中删除。我是codeigniter + mongodb的新手。请帮忙

2 个答案:

答案 0 :(得分:3)

使用 $pull 数组修饰符运算符从现有数组中删除与指定条件匹配的值的所有实例。

以下mongo操作更新集合中的所有文档,以从数组"gm_user_id"中删除值为"55f90ccf2f170d79048b4570"的{​​{1}}属性的对象:

gm_favourites

这将转换为PHP,如下所示:

db.collection.update(
    { },
    { 
        "$pull": { 
            "gm_favourites": { 
                "gm_user_id": "55f90ccf2f170d79048b4570" 
            }
        } 
    },
    { "multi": true }
);

答案 1 :(得分:1)

如果要基于for删除嵌入的文档,请使用以下命令。 (假设集合名称是收藏夹):

  

db.test.update({},{$ pull:{'gm_favourites':{'gm_user_id':'55f90ccf2f170d79048b4570'}}})

上述命令将删除匹配的嵌入文档。