2017-01-19 8 views
0

に新しいフィールドを追加します。 マングースは、私は、スキーマを持っているコレクション(Node.jsの)

var userSchema = new Schema({ 
    name: String, 
    username: { type: String, required: true, unique: true }, 
    password: { type: String, required: true }, 
    admin: Boolean, 
    created_at: Date, 
    updated_at: Date 
}); 

だが、私はこのスキーマを使用して100 Users行ったと仮定しましょう。このフィールドを持つように、私はすべての新しい Users必要

var userSchema = new Schema({ 
    name: String, 
    username: { type: String, required: true, unique: true }, 
    password: { type: String, required: true }, 
    admin: Boolean, 
    created_at: Date, 
    friends: [Schema.Types.ObjectId], //the new addition 
    updated_at: Date 
}); 

は今、私は、スキーマを変更したいです。私はまた、既存の100のすべてのUsersが今このフィールドを持っていることを望む。これどうやってするの?あなたができるクライアントアプリや端末内のクエリインターフェイスを使用して

答えて

1

db.users.updateMany({ 
    $set: { "friends" : [] } 
}); 

は、ここでは、コレクション内のすべてのドキュメントを更新するために、マングースModel.updateを使用することができますdocs reference.

1

です。

User.update({}, { friends: [] }, { multi: true }, function (err, raw) { 
    if (err) return handleError(err); 
    console.log('The raw response from Mongo was ', raw); 
}); 

重い操作であるため、コレクションが大きい場合はプロダクションでの使用はお勧めしません。しかし、あなたの場合、それはうまくいくはずです。

+0

その後、私は何をしていますか? – jaytj95

+1

これは一度だけしたいことですか? もしそうなら、MongoDBシェルスクリプトを使うほうが良い選択かもしれません。 –

+0

私は時々これを行うだけです。一般的に、モデルを更新したいときはいつもそうではありません – jaytj95

関連する問題