2013-03-08 67 views
1

我有一个队列机制,我希望它保持小型,所以所有排队的对象在完成处理后都会移动到名为history的不同集合中,更新了,只有参考和信息。如何将对象从一个集合移动到另一个集合而不更改_id

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

`

回答

3

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

+0

很高兴知道,谢谢! – 2013-03-09 12:07:55

1

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

这个工作对我来说:

obj['_id'] = undefined; 

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

相关问题