2012-04-24 37 views
1

我在MongoDB集合中使用一個GUID類型的鍵創建了一些文檔,我希望能夠將它們複製到一個新行, GUID,使用shell。我嘗試這樣做:使用新的GUID從MongoDB shell生成一個新行

db.schedules.find().forEach(function(x) { 
    x._id = null; 
    db.schedules.save(x); 
}); 

我預計_id場自動生成後,我將它設置爲空,但當然,這是天真的。如果可以的話,我可以怎樣在shell中生成一個新的GUID?

UPDATE

顯然不可能產生從殼一個GUID。我最終在C#中編寫了一個迷你腳本,以便使用Mongo C#驅動程序。

回答

5

試試這個:

x._id = new ObjectId(); 
db.schedules.insert(x); 

你也可以這樣做:

delete x._id; 
db.schedules.insert(x); 
+0

好了,這樣的作品,但當然,ID是的ObjectId **的ObjectId( 「4f963746ee633c3aa4a71a60」)**,而比C#GUID ** BinData(3,「+ Wgv1RJhr0K5/qbi3McvlQ ==」)**。我想這是C#驅動程序的一個特性,我將不得不爲此任務使用它。 – McGarnagle 2012-04-24 05:18:46

+0

是的,shell沒有辦法生成GUID。如果你有一個GUID值,你可以通過BinData封裝器在你的shell中設置它(使用base 64),但是它不能爲你生成新的GUID值。 (對不起,錯過了你想要的GUID) – 2012-04-24 05:38:11

+0

k,thx的澄清。 – McGarnagle 2012-04-24 05:54:31