MongoDB中如何将元素按降序推入数组?
解决方案
要让新推入的Channel ID排在数组最前面,需要修改$push的写法,使用MongoDB的$position修饰符指定插入位置:
修改后的代码
await User.findByIdAndUpdate( req.params.userId, { $push: { channel: { $each: [channel._id], $position: 0 } } }, { new: true, } ).populate('channel')
说明
- 默认
$push会把元素追加到数组末尾,通过$position: 0可以指定将元素插入到数组的最开头 $each是必须的,因为$position修饰符需要配合$each一起使用,用来包裹要插入的元素列表- 修改后,新添加的Channel ID会排在数组首位,后续查询时数组会保持"新元素在前"的顺序,
populate后结果也会遵循这个顺序
内容的提问来源于stack exchange,提问作者Venkatesh
相关产品推荐
相关产品推荐

