2017-12-27 20 views
1

マイスキーママングースとネストされた配列

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

問題 - 選択(_idによって)領域に存在する都市を挿入する方法。地域の_idはmongoose/mongodbによって自動的に追加されています。安定しているはずなので、変更したくありません。

私は現在findOneAndUpdateのさまざまな組み合わせを試みましたが、無駄でした。現在のクエリ:

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

ご意見はありますか?

答えて

0

findOneAndUpdateクエリが正しいです。問題は、Countryオブジェクトの古い値をキャッシュしていたテストにありました。