Remove attribute from all MongoDB documents using Python and PyMongo

Put quotes around $unset, name the parameter you're including (multi) and use the correct syntax for true:

mongo.db.collection.update({}, {'$unset': {'parent.toremove':1}}, multi=True)

Just found weird to have to attach an arbitrary value for the field to remove, such as a small number (1), an empty string (''), etc, but it's really mentioned in MongoDB doc, with sample in JavaScript:

$unset

The $unset operator deletes a particular field. Consider the following syntax:

{ $unset: { field1: "", ... } }

The specified value in the $unset expression (i.e. "") does not impact the operation.

For Python/PyMongo, I'd like to put a value None:

{'$unset': {'field1': None}}

So, for OP's question, it would be:

mongo.db.collection.update({}, {'$unset': {'parent.toremove': None}}, multi=True)