创建新文档并将对该文档的引用存储在另一个集合中

时间:2018-12-08 00:12:15

标签: mongodb

您可以在Project中创建一个Task

我想将对项目任务的引用存储为Project数组:

ObjectId

但是,当我创建一个新的Project: { name: 'My Project', tasks:[ObjectId('...'), ObjectId('...')] } 时,应该如何创建任务

如果我这样做,则可以成功创建任务,但是创建引用可能会失败,从而导致孤立的Task

Task

我知道MongoDB现在支持多文档ACID事务,但是我想知道是否有更直接的方法来实现此目的,也许可以通过聚合?

我愿意就如何最好地处理此问题提出建议。我在用猫鼬。

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用mongoose middleware。连接save post钩子,然后在创建任务后将对象ID插入项目tasks数组中。

schema.post('save', function(doc) {
  // use the doc._id now to insert into `Project.tasks` etc
});