Ответ 1
Ваш код не работает, потому что $pullAll требует список элементов, которые необходимо удалить из массива. Вы пропускаете пустой массив, поэтому ничего не удаляется.
Вы можете просто установить документы для пустого массива вместо удаления всех элементов:
db.users.update({"username": "tom"}, {"$set": {"documents": []}})
Если вы хотите избежать создания массива документов, если "tom" его не имеет, проверьте, существует ли массив при выборе документа для обновления:
db.users.update({username: "tom", documents: {$exists: true}},
{$set: {documents: []}})
UPDATE: Еще одна опция для удаления всех элементов массива - использовать $pull с запросом, который удовлетворяет всем документам:
db.users.update({username: "tom"}, {$pull: {documents: {$exists: true}}})