请各位高手指点,关于限定长度的数组更新问题。
发布于 8 年前 作者 zgwang24 2254 次浏览 来自 问答

Schema模型如下: var queueInfoSchema = new Schema({ userName:{ type: String, required: true, unique: true }, queues:[queueSchema] }); 使用mongoose如何做到queues集合中始终保存最近10条的数据,当然如果小于10条的全部保存下来,我大概知道使用修改器$slice,我写的代码如下: queueInfoModel.update({userName: userName},{$push: {queues: queueObj, $slice: -10}}); 很明显该条语句是无效的,请高手指教,多谢!

1 回复

已解决通过下列方式解决: queueInfoModel.findOne({userName: userName}, function(err, res){ if(err){ callback(new Error(“userName” + userName + “is not exist in mongodb”), res) }else{ res.queues.push(queueObj); if(res.queues.length > 10){ for(var i = res.queues.length - 10; i > 0; i–){ res.queues.shift(); } } res.save(callback); } }); }; 这种方式肯定不如mongodb修改器效率高,如果有更好的方法,请指点!

回到顶部