Я не уверен, что вы подразумеваете под "типом поля... является строкой" и "в этом поле... нет данных". Вы имеете в виду, что поле существует в ваших документах, но установлено в пустую строку или null?
В любом случае MongoDB «бессхемен», что означает, что он не будет применять какую-либо конкретную схему к вашим документам, даже если все документы в коллекции имеют одинаковую структуру.
Если вы используете фреймворк, который требует объявления схемы (MongoEngine, mongokit и т. д.), вам придется внести соответствующие изменения в использование фреймворка, и нам нужно будет знать, какой фреймворк вы используете. .
Если вы просто используете чистый pymongo, вы можете просто изменить свой документ по своему усмотрению. Предположим, у вас есть такой документ:
{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, точный синтаксис будет немного отличаться в оболочке или в других драйверах)
person
dcrosta
schedule
22.07.2011