如何从嵌入式数组中删除对象?

时间:2018-08-20 05:13:28

标签: javascript mongodb

这是我的收藏集“个人资料”的架构

{ 
        _id : ObjectId("123"), 
        name : "Tommy", 
        defaultrates : 
        [ 
                {_id : ObjectId("111"), rate : 35.0, raisedOn : "5/2/2009"}, 
                {_id : ObjectId("222"), rate : 55.0, raisedOn : "5/3/2010"}, 
                {_id : ObjectId("333"), rate : 65.0, raisedOn : "5/5/2010"} 
        ] 
} 

我要删除默认费率的第一个索引({_id:111,费率:35.0,raisedOn:“ 5/2/2009”})。

结果应为:

{ 
        _id : ObjectId("123"), 
        name : "Tommy", 
        defaultrates : 
        [ 
                {_id : ObjectId("222"), rate : 55.0, raisedOn : "5/3/2010"}, 
                {_id : ObjectId("333"), rate : 65.0, raisedOn : "5/5/2010"} 
        ] 
}

我是在控制台中完成的:

db.profile.update({'_id: ObjectId("123")},{ $pull: { 'defaultrates':{'_id': "111"}}},{ multi: false })

但是可悲的是,它没有给我想要的输出。

请帮助。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

我认为您在混用和匹配引号和双引号。试试这个:

db.profile.update({
"_id": ObjectId("123")
},
{
    "$pull": {
        "defaultrates": {
            "_id": ObjectId("111")
        }
    }
},
false,
true
);

假是多重的。真的是upsert(如果没有,请插入一个)。