【发布时间】:2014-10-08 07:13:05
【问题描述】:
在我的聊天应用程序中,每个用户都有一个未读消息字典,如下所示:
未读字典
{
_id: // reference to their user_id,
events: [] // array of ObjectIds
}
我想做一个 mongoose findByIdAndUpdate 查询 where ) 按 ID 搜索并将新的 ObjectId 推入事件数组中。
如果文档不存在,我希望它更新文档,为其分配用于更新查询的 _id 并使用在更新查询中被 $push 编辑的元素初始化数组。
编辑:
这是我想要查询的示例:
Model.findByIdAndUpdate(user_id, {$push: {events: event_id}}, {upsert: true}, function (err, updatedDoc) {});
如果文档不存在并且它决定更新插入,它会使用我用来搜索的 user_id 来分配更新插入的文档上的 _id 吗?或者 mongo 会分配它自己的 _id 吗?我正在寻找与前者相同的东西。
【问题讨论】:
-
听起来像一个标准的 upsert,你试过的时候没有用吗?
-
@JohnnyHK 我认为如果 mongoose 找不到文档,它会分配它自己的 _id,然后插入它。这不是真的吗?
-
最好在问题中添加一些代码,以更好地说明您想要做什么。
-
@JohnnyHK 没问题,谢谢
-
我希望这会满足您的需求。试试看吧。
标签: node.js mongoose insert-update upsert