Javascript 如何从嵌入式阵列中删除对象?
这是我的收藏“简介”的模式 我想删除违约率的第一个索引({u id:111,rate:35.0,raisedOn:“5/2/2009”}) 结果应该是: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"},
{
_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
);