「フィールドのタイプ...は文字列です」と「このフィールド...にはデータがありません」とはどういう意味かわかりません。フィールドはドキュメントに存在しますが、空の文字列に設定されているということnull
ですか?
いずれの場合も、MongoDBは「スキーマレス」です。つまり、コレクション内のすべてのドキュメントが同じ構造を持っている場合でも、ドキュメントに特定のスキーマを適用することはありません。
スキーマの宣言が必要なフレームワーク(MongoEngine、mongokitなど)を使用している場合は、フレームワークの使用に応じて変更を加える必要があり、使用しているフレームワークを知る必要があります。 。
純粋なpymongoを使用している場合は、必要に応じてドキュメントを変更できます。次のようなドキュメントがあるとします。
{name: "dcrosta", address: null }
そしてaddress
、サブドキュメントを作成します。これはすべて1回の更新で実行できます。
db.people.update({address: None}, {'$set': {'address': {
'street1': None,
'street2': None,
'city': None,
'state': None,
'zip': None,
}}}, multi=True)
(これはpymongoにあり、正確な構文はシェルまたは他のドライバーで少し異なります)