从Mongo数组中删除空元素。

8
{
        "_id" : 160,
        "info" : [
            {
                'name': 'Serg',
                'proff': 'hacker'
            },
            null,
        ]
    }

正如您所看到的,我的数组中有null元素,在info数组中移除null元素需要一个通用解决方案。

我尝试了以下方法:

for doc in iter:
    people.update({ '_id' : doc['_id']}, { '$pull' : { 'info' : 'null' }})

iter 是一组文档,people 是另一组文档。

我在命令行中也尝试过这个:

> db.people.findAndModify({ query: {}, update: {'$pull': {info:null} } } )

但是以上示例都没有从我的文档中删除这个空值!!))
1个回答

23

这应该对您有帮助。在Python中,"null"被称为"None"。

    for doc in iter:
        people.update({'_id':doc[id]},{'$pull':{'info':None}})

Python中的null对象是什么?

在Mongo shell中,这应该能够正常工作:

    db.people.update({_id:160},{$pull:{info:null}})

如果您想使用更新运算符一次更新多个文档,即从多个文档中提取空值,那么必须提供multi:true选项。默认情况下,如果查询参数留空,即{},并且未提供multi:true,更新运算符将作用于找到的第一个文档。

    db.people.update({},{$pull:{info:null}},{multi:true})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接