2012-04-24 7 views
1

GUIDタイプのキーを持つMongoDBコレクションにいくつかのドキュメントがあります。新しい行にそれらをコピーすることができます。 GUIDは、シェルを使用しています。私はこれを試してみました:MongoDBシェルから新しいGUIDを使用して新しい行を生成する

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

私は自動生成し、私はこれをnullに設定した後に _idフィールドを期待しますが、ナイーブだった、もちろん。シェル内に新しいGUIDを生成する方法はありますか?シェルからGUIDを生成するための

UPDATEどうやら

ない可能。私はMongo C#ドライバを使用するために、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

+0

ええ、シェルにはGUIDを生成する方法がありません。 GUID値を持っている場合、BinDataラッパーを使って(ベース64で)表示するようにシェルで設定できますが、新しいものは生成できません。 (申し訳ありませんが、あなたがGUIDを望んでいなかった) –

+0

k、説明のためにthx。 – McGarnagle

関連する問題