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



这是我的集合"profile"的架构

{ 
_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 })

但遗憾的是,它没有给我想要的输出。

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

我认为您不分青红皂白地混合和匹配引号和双引号。试试这个:

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

那个假是多的。true 是更新插入(如果不可用,请插入一个(。

最新更新