2017-10-31 11 views
0

を節約しながら、私はサブドキュメントを作成するために、配列の要素をプッシュする、プッシュサブドキュメント内の配列のすべての要素を文書

私のスキーマ

var chatGroup = new Schema({ 

name : { 
    type : String, 
    default : null 
}, 
members: { 
    type : [subSchemaForMember] 
}, 

}、{コレクション:「chatGroup」});

するvar subSchemaForMember =新しいスキーマ({

user_id : {type : Schema.Types.ObjectId , ref : 'user'}},{_id : false}); 

文書を保存するには、私のクエリがある

var chatGroup = new ChatGroup({ 

     name  : req.body.name, 
     image  : req.body.image, 
     created_by : req.body.celebrity_id, 
     $pushAll : {'members' : req.body.members} 
    }) 

どこreq.body.memebers = [ 'someid'、 'someid'、 'someid' ]

を私はONL、あなたが実際に文書を保存表示されていない任意のループ

+0

をちょうど 'subSchemaForMembers'です:ノートのも

は、現在のマングースのドキュメントが$pushAllが廃止されていることを示し、あなたが$eachと一緒$pushを使用する必要がありますが、同じルールが適用され、ここを参照してくださいということです文字列?それはあなたが少なくとも 'req.body.members = ['someId'、 'someId'、 'someId']'と言ったときにあなたが表現しているものです。 – Kevin

+0

つまり、メンバー:{type:[String]} 'ですか? – Kevin

+0

メンバー:[{user_id:{type:Schema.Types.ObjectId、ref: 'user'}、}]このサブ文書のようなもの –

答えて

0

せずに、私はそれをやりたい助けてくださいyコンストラクタでnewを呼び出します。明示的にsaveを呼び出す必要があります。それを構築した後のオブジェクトにドキュメントの作成に関するドキュメントは、http://mongoosejs.com/docs/models.htmlを参照してください。

また、すでにmongodbにオブジェクトがあり、既存の値を持ち、それらの値を保持し、追加の値を配列に追加したい場合にのみ適用されます(例では、配列はmembersになります)。

https://docs.mongodb.com/manual/reference/operator/update/push/#append-multiple-values-to-an-array

+0

ここでは動作しないものもあります –

+0

モデルを保存していますか?あなたの例はそれをしません、私は言ったように、あなたは新しいオブジェクトに全くプッシュを使用すべきであると確信していません。 idsの配列を代入するだけです。 – Kevin

関連する問題