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

As you can see I have null element in my array, I need a general solution that will remove null elements from info array.

I tried this:

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

where iter is a collection of documents. and people is a collection

I also tried this in the shell:

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

But none of the above examples delete this null from my documents!! ))

1 Answer 1

24

This should work out for you. In python null is called None.

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

null object in Python?

Also in mongo shell, this should work out:

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

If you want the update operator, to update more that one document at a time, that is to pull out null values from multiple documents, then you have to supply the multi:true option. Because by default, if the query arguemnt is left blank i.e. {} and mulit:true is not provided, update operator works on the first document that it finds

    db.people.update({},{$pull:{info:null}},{multi:true})
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.