1

mongoで_idsを文字列として生成したいと思います。これらは、クライアントに送り返したり、プログラムの他の部分で使用したりするときに、はるかに使いやすくなります。今、私はそれらをすべてこれらのものの文字列に変換してから、クエリを実行するためにそれらを元に戻します。

しないアイデアや理由はありますか?

4

1 に答える 1

3

_idは好きなように設定できます。ObjectIdを作成して文字列に変換し、実際のObjectIdの代わりに文字列を保存することもできます。ここで失う主なものはコンパクトさです。失うことになるマイナーなことは、日付など、ObjectIdをキャストせずにObjectIdから値を抽出する機能です。

例:

> var newId = new ObjectId();
> db.test.insert({_id:newId, x:"test"});
> db.test.find();
{ "_id" : ObjectId("4f94c2a11a6bbec3872cb315"), "x" : "test" }
> db.test.insert({_id:newId.str, x:"test"});
> db.test.find();
{ "_id" : ObjectId("4f94c2a11a6bbec3872cb315"), "x" : "test" }
{ "_id" : "4f94c2a11a6bbec3872cb315", "x" : "test" }

更新:これを行うには、ObjectIdに再キャストする必要があります。

> var newId = new ObjectId();
> newId.getTimestamp();
ISODate("2012-04-23T03:22:56Z")
于 2012-04-23T02:45:00.977 に答える