Schema = {
uid:{type:ObjectId},
reply:[]
}
我想在reply里push每一个人的对话集合
reply:[
{
user_id:123,
commnet:[]
},
{
user_id:456,
comment:[]
}
]
如果我想在user_id:789的comment里面push一条对话内容
{
user_id:789,
comment:[
{
//内容
}
]
}
得先判断user_id:789的对话集合是否存在,如果不存在,创建它 find()该文档后用遍历可以实现,但是太耗时
var exists = false;
var index;
for(var i in reply){//reply为find()后返回的doc.reply
if(reply[i].user_id == '789'){
exists = true;
index = i;
return;
}
}
if(exists){//如果存在
reply[i].comment.push({//内容})
}else{//如果不存在
reply.push({
user_id:789,
comment:[
{
//内容
}
]
})
}
很明显,这样做太耗时,而且繁杂,有没有更简便的方法实现上面的东西呢?
4 回复
http://cnodejs.org/topic/50a60955637ffa4155faf861 我本来一直都是像我那样遍历的,我昨天晚上看你的帖子,看到省时多了,立马就想把自己的前面写的都改了,但是一直没弄好,aggregate只能获取数据,不能对数据进行操作保存啊