Javascript 如何从嵌入式阵列中删除对象?

Javascript 如何从嵌入式阵列中删除对象?,javascript,mongodb,Javascript,Mongodb,这是我的收藏“简介”的模式 我想删除违约率的第一个索引({u id:111,rate:35.0,raisedOn:“5/2/2009”}) 结果应该是: { _id : ObjectId("123"), name : "Tommy", defaultrates : [ {_id : ObjectId("222"), rate : 55.0, raisedOn : "5/3/2010"},

这是我的收藏“简介”的模式

我想删除违约率的第一个索引({u id:111,rate: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 })
但遗憾的是,它没有给我想要的输出


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

我认为你在不加区别地混合和匹配引号和双引号。试试这个:

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

这是错误的。true为upsert(如果不可用,请插入一个)。

…更新({'id:…您忘记关闭报价了?谢谢您的更正。但是,它仍然没有给出所需的输出,只是没有。结果是:“nMatched”:1,“nUpserted”:0,“nModified”:0它没有修改集合。我想知道我缺少了什么?好的,试试这个。我编辑了我的答案。我忘记在默认速率内添加对象ID,直到没有给出所需的输出。您是否有其他方法来获得所需的输出?您看到的输出是什么?
db.profile.update({
"_id": ObjectId("123")
},
{
    "$pull": {
        "defaultrates": {
            "_id": ObjectId("111")
        }
    }
},
false,
true
);