如何在不更改_id的情况下将对象从一个集合移动到另一个集合

时间:2013-03-08 20:43:41

标签: mongodb mongoose

我有一个队列机制,我想保持小,所以所有排队的对象,在完成处理后,会被移动到一个名为history的不同集合,在那里它们不再更新,仅供参考和信息。< / p>

是否可以从一个集合中获取一个对象,将其删除并将其插入另一个集合而不更改_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());

`

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

这对我有用:

obj['_id'] = undefined; 

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