从 mongo 数组中删除空元素

Posted

技术标签:

【中文标题】从 mongo 数组中删除空元素【英文标题】:Remove null element from mongo array 【发布时间】:2013-01-26 04:13:20 【问题描述】:

        "_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 是一个集合

我也在 shell 中试过这个:

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

但以上示例均未从我的文档中删除此 null! ))

【问题讨论】:

【参考方案1】:

这应该适合你。在 python 中,null 被称为 None。

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

null object in Python?

同样在 mongo shell 中,这应该可以解决:

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

如果您希望更新运算符一次更新多个文档,即从多个文档中提取空值,则必须提供 multi:true 选项。因为默认情况下,如果查询arguemnt 留空,即 并且未提供mulit:true,则更新运算符将处理它找到的第一个文档

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

【讨论】:

以上是关于从 mongo 数组中删除空元素的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中从数组中删除空元素

从数组中删除空元素

从 Array(Java) 中删除空元素

从字符串指针数组中删除一个元素

如何删除多维字符串数组中的空元素?

如何从数组中删除所有元素[重复]