我有一个租户集合,每个租户实体都有一个 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
}
}
});