1

Tenant コレクションがあり、各 Tenant エンティティには TenantLeases 子リストがあります。TenantLease エンティティには MonthlyRent プロパティがあり、その名前を Rent に変更しようとしています。これが私が試したものです:

db.Tenant.update( { "TenantLeases.MonthlyRent": { $exists:true } }, { $rename: { "TenantLeases.MonthlyRent": "TenantLeases.Rent" } }, false, true);

$rename ソース フィールドが無効です

db.Tenant.update( { "TenantLeases.$.MonthlyRent": { $exists:true } }, { $rename: { "TenantLeases.$.MonthlyRent": "TenantLeases.$.Rent" } }, false, true);

$rename ソースは動的配列ではない可能性があります

明らかに $rename は機能しないため、TenantLeases を反復処理して名前を変更しようとしていますが、特定の配列項目を更新する方法がわかりません。

db.Tenant.find().forEach(function(tenant) {
   if(tenant.TenantLeases) {
      for(var k=0;k<tenant.TenantLeases.length;k++) {
         db.Tenant.update( { "TenantLeases." + k + ".MonthlyRent": { $exists:true } }, { $rename: { "TenantLeases." + k + ".MonthlyRent": "TenantLeases." + k + ".Rent" } }, false, false);//gives syntax error
      }
   }
});
4

0 に答える 0