我有一个租户集合,每个租户实体都有一个TenantLeases子列表。 TenantLease实体有一个MonthlyRent属性,我试图将其重命名为Rent。这是我试过的:
db.Tenant.update( { "TenantLeases.MonthlyRent": { $exists:true } }, { $rename: { "TenantLeases.MonthlyRent": "TenantLeases.Rent" } }, false, true);
$重命名源字段无效
db.Tenant.update( { "TenantLeases.$.MonthlyRent": { $exists:true } }, { $rename: { "TenantLeases.$.MonthlyRent": "TenantLeases.$.Rent" } }, false, true);
$ rename source可能不是动态数组
显然$ 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
}
}
});