2017-12-27 222 views
1

我的架構貓鼬和嵌套數組

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(); 

任何提示?

回答

0

findOneAndUpdate查詢是正確的。測試中存在的問題是緩存了Country對象的過時值。