CNode

请各位高手指点,关于限定长度的数组更新问题。

问答
Zzgwang24发布于10 年前最后回复10 年前1 回复2742 浏览0 收藏

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)

Z
zgwang24#1·10 年前

已解决通过下列方式解决: 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修改器效率高,如果有更好的方法,请指点!

参与回复
登录后即可参与回复。登录