Я не уверен, что вы подразумеваете под "типом поля ... является строкой" и "в этом поле ... нет данных". Вы имеете в виду, что поле существует в ваших документах, но имеет пустую строку или null
?
В любом случае MongoDB «без схемы», что означает, что он не будет применять какую-либо конкретную схему к вашим документам, даже если все документы в коллекции имеют одинаковую структуру.
Если вы используете фреймворк, требующий объявления схемы (MongoEngine, mongokit и т. Д.), Вам придется внести соответствующие изменения в ваше использование фреймворка, и нам нужно будет знать, какой фреймворк вы используете. Используешь.
Если вы просто используете чистое пимонго, вы можете просто изменить документ по своему усмотрению. Предположим, у вас есть такой документ, как:
{name: "dcrosta", address: null }
И вы хотите сделать address
поддокументом. Вы можете сделать все это в одном обновлении:
db.people.update({address: None}, {'$set': {'address': {
'street1': None,
'street2': None,
'city': None,
'state': None,
'zip': None,
}}}, multi=True)
(это в pymongo, точный синтаксис будет немного различаться в оболочке или в других драйверах)