我想推送数组元素来创建子文档,
我的架构
var chatGroup = new Schema({
name : {
type : String,
default : null
},
members: {
type : [subSchemaForMember]
},
},{collection:' chatGroup' });
var subSchemaForMember = new Schema({
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']
请帮助我想要没有任何循环
答案 0 :(得分:0)
我没有看到您实际保存文档,只在构造函数上调用new
。您需要显式调用save。在构造它之后在对象上。有关创建文档的文档,请参阅此处:http://mongoosejs.com/docs/models.html。
此外,$pushAll
的使用仅适用于mongodb中已有对象的情况,该对象具有现有值,并且您希望保留这些值并将其他值推送到数组上(因此在您的示例中,您可以只需将数组分配给members
)。
另外值得注意的是,当前的mongoose文档表明$pushAll
已被弃用,您应该$push
与$each
一起使用,但适用相同的规则,请参阅此处:
https://docs.mongodb.com/manual/reference/operator/update/push/#append-multiple-values-to-an-array