这是我的集合"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 是更新插入(如果不可用,请插入一个(。