Remove null element from mongo array
1 2 3 4 5 6 7 8 9 10  | { "_id" : 160, "info" : [ { 'name': 'Serg', 'proff': 'hacker' }, null, ] }  | 
正如您看到的,我的数组中有空元素,我需要一个通用的解决方案,它将从信息数组中删除空元素。
我试过这个:
1 2  | for doc in iter: people.update({ '_id' : doc['_id']}, { '$pull' : { 'info' : 'null' }})  | 
其中,
我也在壳里试过这个:
1  | > db.people.findAndModify({ query: {}, update: {'$pull': {info:null} } } )  | 
但是上面的例子都没有从我的文档中删除这个空值!!)
这对你来说应该是可行的。在python中,空值被称为无。
1 2  |     for doc in iter: people.update({'_id':doc[id]},{'$pull':{'info':None}})  | 
python中的空对象?
同样在MongoShell中,这应该可以解决:
1  |     db.people.update({_id:160},{$pull:{info:null}})  | 
如果希望使用update运算符,一次更新多个文档,即从多个文档中提取空值,则必须提供multi:true选项。因为在默认情况下,如果查询参数为空,即未提供和mulit:true,则update操作符将处理它找到的第一个文档。
1  |     db.people.update({},{$pull:{info:null}},{multi:true})  |