2013-03-08 70 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那麼這將解決您的問題。

相關問題