ドキュメントのコレクションだけでなく、サブドキュメントも検索し、出現するたびに「en」というタイトルのフィールドの名前を「en-GB」に変更する必要があります。このコードを試しましたが、JavaScript の実行に失敗しました: RangeError: Maximum call stack size超過エラー。問題は、パスを知らずに関数を使用してサブドキュメントを検索することです。
remap = function (x) {
if (x.en){
db.products.update({_id:x._id}, {$rename:{"en":"en-GB"}}, false, true); }
for (var propt in x) {
if (Object.prototype.toString.call( x[propt] ) === '[object Array]' ||
Object.prototype.toString.call( x[propt] ) === '[object Object]'){
remap(x[propt]);
}
}
}
また、代わりに配列を使用してキューに追加する同様のものを作成しましたが、「document.subdocument」などのサブドキュメントパスを保存し、関数を再度実行してフィールドを確認する方法が必要です。