MongoDB的更新,从阵列
问题描述:
删档我有这样一个集合:MongoDB的更新,从阵列
db.users.findOne({'_id':ObjectId("541a8cac7f8b9acf408b4567")});
{
"_id" : ObjectId("541a8cac7f8b9acf408b4567"),
"friends" : [
{
"_id" : ObjectId("541adb1f7f8b9ad0408b4567"),
"time" : 1411046195
},
{
"_id" : ObjectId("541adb1f7f8b9ad0408b5467"),
"time" : 1411046123
}
]
}
,我用它来删除!
db.users.update({'uuid':'wb_2204553113'}, {'$pullAll':{friends:[{_id:ObjectId('541adb1f7f8b9ad0408b4567'), time:{$gt:0}}] } });
而是返回NULL,它混淆
答
与通过指定查询来移除元素的$ pull操作符不同,$ pullAll移除了与列出的值匹配的元素。
所以,你在这种情况下,更新应该是:
db.users.update( {'uuid' : 'wb_2204553113'}, {$pullAll : {friends: [{_id : ObjectId('541adb1f7f8b9ad0408b4567') , time : 1411046195}]} } );
记下确切的时间值。
您可以表达上述当然是有$pull
:
db.users.update( {'uuid' : 'wb_2204553113'}, {$pull : {friends: {_id : ObjectId('541adb1f7f8b9ad0408b4567') , time : {$gt : 0}}}} );
而你的情况也可以表示为:
db.users.update( {'uuid' : 'wb_2204553113'}, {$pull : {friends: {_id : ObjectId('541adb1f7f8b9ad0408b4567')}}} );
`
什么ü希望去做? – vmr 2014-09-18 16:46:59