You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS/Mongoose:将ObjectID插入数组头部

将ObjectID插入MongoDB数组头部的简便方法

嘿,我完全懂你不想用reverse()那种绕路方法的心情!其实MongoDB本身就提供了直接把元素插到数组头部的内置操作,根本不用把整个文档取出来折腾。

直接用$push操作符配合$position参数就可以搞定,一步到位:

Mongoose示例

如果你用的是Mongoose,更新语句可以这么写:

// 把新的Post._id插到posts数组的最前面
User.updateOne(
  { _id: 你的用户ID }, // 定位到目标用户文档
  { $push: { posts: { $each: [Post._id], $position: 0 } } }
);

原生MongoDB驱动示例

如果是用原生驱动,写法类似:

db.users.updateOne(
  { _id: 你的用户ID },
  { $push: { posts: { $each: [ObjectId("新的帖子ID")], $position: 0 } } }
);

关键参数说明

  • $each:用来指定要插入的元素列表(哪怕只有一个元素,也要用数组包起来)
  • $position: 0:明确告诉MongoDB把元素插入到数组的第0位,也就是头部位置

这种方法的优势在于全程在数据库端完成操作,不需要把整个用户文档拉到应用层修改再存回去,不仅更高效,还能避免多请求并发修改时可能出现的冲突问题。

内容的提问来源于stack exchange,提问作者Steven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:02:07