2017-01-28 6 views
0

私は2つのスキーマ(ユーザーと投稿)を持つMongoDBデータベースを持っています。Mongooseを使用して文字列フィールドをMongoDBのObjectIDフィールドに変換します

username: {type: String}, 
following: {type: [String], ref: 'users'} 

user_id: {type: String, ref: 'users'} 
comment: {type: String} 

しかし、今、私はそう文字列からのObjectIdに参照フィールドタイプを変更することに決めました、今私が持っている:それはこのように見えるために使用

username: {type: String}, 
following: {type: [Schema.Types.ObjectId], ref: 'users'} 

user_id: {type: Schema.Types.ObjectId, ref: 'users'} 
comment: {type: String} 

しかし、データベース内の古いデータがありますそれでも文字列として保存されます。そのデータを適切に移行するにはどうすればよいですか?

私はMongooseを使用して自分のコードからデータベースを照会します。

+0

を更新する model.findを({})を使用する必要があります文字列は有効な 'ObjectId'進値はありますか? – chridam

+0

@chridamはい、そうです。 – CorrieSparrow

+0

私はあなたがすべてのポスト文書をmodel.find({})し、そのループの後に各文書とドキュメントを使っていると思うと思います。 user_id = mongoose.Types.ObjectId(doc.user_id);各文書のdoc.saveを実行します –

答えて

1

すべてのポストドキュメントをフェッチし、そのループの後、各文書を通って、各文書

doc.user_id = mongoose.Types.ObjectId(doc.user_id); 
doc.save(); 
関連する問題