猫鼬和嵌套数组

猫鼬和嵌套数组

问题描述:

我的架构猫鼬和嵌套数组

let citySchema = new mongoose.Schema({ 
    ... 
}); 
let countrySchema = new mongoose.Schema({ 
    regions : [{ 
     cities : [ref: 'City'] 
    }] 
}); 

问题 - 如何插入现有城市到选择的(通过_id)区。一个区域的_id是由猫鼬/ mongodb自动添加的,我不想改变它,因为它应该保持稳定。

我目前尝试了findOneAndUpdate的各种组合,但徒劳无益。我当前的查询:

Country 
    .findOneAndUpdate({ 
    _id : knownCountryId, 
    'regions._id' : knownRegionId 
    },{ 
     $push : { 'regions.$.cities' : existingCity._id } 
    },{ 
     select : { 
      'regions' : { 
       $elemMatch : { 
        _id : knownRegionId 
       } 
      } 
     } 
    }).exec(); 

任何提示?

findOneAndUpdate查询是正确的。测试中存在的问题是缓存了Country对象的过时值。