1

我有一个我想保持较小的队列机制,所以所有排队的对象在完成处理后都被移动到另一个称为历史的集合中,在那里它们不再更新,仅用于参考和信息。

是否可以从一个集合中获取一个对象,将其删除并将其插入另一个集合而不更改 _id ?

我现在通过在模式中创建第二个 id 来解决这个问题,并将其转移到新对象,但我宁愿继续引用 _id。

此外,如果您认为我忽略了某些东西并且不需要第二次收集来保持我的排队机制快速,我很想听听。

这是我目前的做法(使用步骤和下划线)

`

            // moving data to a new process in the history collection
            var data = _.omit(process.toObject(), '_id');
            console.log("new history data", data);
            var history = new db.History(data);
            history.save(this.parallel());
            db.Queue.remove({_id : process._id }, this.parallel());

`

4

2 回答 2

3

您可以将文档从一个集合复制/移动到另一个集合,而无需更改它_id。如果您创建一个已有的新文档,_id那么 Mongoose/Mongo 将使用它。并且_id值只需要在单个集合中是唯一的,而不是在集合之间。

于 2013-03-09T05:05:02.530 回答
1

我尝试使用 delete delete object._id; 来删除该属性并允许 mongodb 自己分配一个,但由于某种原因 delete 不起作用。

这对我有用:

obj['_id'] = undefined; 

如果您不打算使用,_id那么这将解决您的问题。

于 2013-11-06T14:32:15.297 回答