这是我的收藏集“个人资料”的架构
{
_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 })
但是可悲的是,它没有给我想要的输出。
请帮助。这样做的正确方法是什么?
答案 0 :(得分:1)
我认为您在混用和匹配引号和双引号。试试这个:
db.profile.update({
"_id": ObjectId("123")
},
{
"$pull": {
"defaultrates": {
"_id": ObjectId("111")
}
}
},
false,
true
);
假是多重的。真的是upsert(如果没有,请插入一个)。