3
私の文書_id
をクライアント側の文字列として使用します。私はあなたがサーバー上でできるように、この値からタイムスタンプを引き出すことが大好きです。クライアント側でこの機能を再現することは可能ですか?クライアント側のmongo _idの日付を取得します
例_id: "4f94c2a11a6bbec3872cb315"
おかげで(このデータをプルするようOBJECTID改作、またはスタンドアロン関数を作成)!
私の文書_id
をクライアント側の文字列として使用します。私はあなたがサーバー上でできるように、この値からタイムスタンプを引き出すことが大好きです。クライアント側でこの機能を再現することは可能ですか?クライアント側のmongo _idの日付を取得します
例_id: "4f94c2a11a6bbec3872cb315"
おかげで(このデータをプルするようOBJECTID改作、またはスタンドアロン関数を作成)!
これについては、手順に分かれています...残念ながら、それはObjectIDに格納されるのは2番目の解決時間です。あなたがテストしたい場合は
var id = "4f94c2a11a6bbec3872cb315";
// first 4 bytes are the timestamp portion (8 hex chars)
var timehex = id.substring(0,8);
console.log(timehex); // gives: 4f94c2a1
// convert to a number... base 16
var secondsSinceEpoch = parseInt(timehex, 16);
console.log(secondsSinceEpoch); // gives: 1335149217
// convert to milliseconds, and create a new date
var dt = new Date(secondsSinceEpoch*1000);
console.log(dt); // gives: Sun Apr 22 2012 22:46:57 GMT-0400 (EDT)
はjsfiddleを参照してください:http://jsfiddle.net/pZdyM/
NOTE:これは一種のクルージ的である - それは、現在のオブジェクトID形式によって異なります。彼らはいつかObjectIDの中でタイムスタンプを動かすかもしれません。それはこれを破るでしょう。
クール、これは非常にラディカルなスタートです。私は時間の16進数が今どこにあるのか知っています:) - 将来の証拠になる方法さえあるのだろうか、おそらくちょうどいつも、 mの実行と16進数の格納方法を示します。 – fancy
彼らはObjectIDをシャーディングキーとしてより良くするために、時間を左端のバイトよりも重要でないところに移動することについて議論していました。しかし、次のようなことをしようとしているように見えます。https://jira.mongodb.org/browse/SERVER-2001だから、私の考えよりも安全かもしれません。 http://groups.google.com/group/mongodb-user/browse_thread/thread/0e807bee202d18ee?pli=1 –