2012-04-24 58 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