へ変換するのですか?私は月と年の入力を持っている場合どのように私たちがのObjectIdからタイムスタンプを取得するために<code>getTimestamp()</code>を使用できることを知っているが、タイムスタンプからのObjectIdを生成するためにどのような方法があるタイムスタンプからモンゴのObjectID
具体的には、その後、私はこれをどのように行う必要があり、DBに照会するモンゴのObjectIDに変換したいですか?
へ変換するのですか?私は月と年の入力を持っている場合どのように私たちがのObjectIdからタイムスタンプを取得するために<code>getTimestamp()</code>を使用できることを知っているが、タイムスタンプからのObjectIdを生成するためにどのような方法があるタイムスタンプからモンゴのObjectID
具体的には、その後、私はこれをどのように行う必要があり、DBに照会するモンゴのObjectIDに変換したいですか?
私は、このための解決策を見つけたのだが、SOFARうまく動作します。
public function createMongoIdFromTimestamp($timestamp) {
$inc = 0;
$ts = pack('N', $timestamp);
$m = substr(md5(gethostname()), 0, 3);
$pid = pack('n', getmypid());
$trail = substr(pack('N', $inc++), 1, 3);
$bin = sprintf('%s%s%s%s', $ts, $m, $pid, $trail);
$id = '';
for ($i = 0; $i < 12; $i++) {
$id .= sprintf('%02X', ord($bin[$i]));
}
return new \MongoID($id);
}
ObjectId()
は12バイトBSONタイプであるとから構成:
あるプロセスIDから成りタイムスタンプからのみObjectId()
を作成することはできません。
することができますはい:
gen_timeはdatetime型であるdummy_id = ObjectId.from_datetime(gen_time)
。
はモンゴシェルから作品
> ObjectId("5a682326bf8380e6e6584ba5").getTimestamp()
ISODate("2018-01-24T06:09:42Z")
> ObjectId.fromDate(ISODate("2018-01-24T06:09:42Z"))
ObjectId("5a6823260000000000000000")
、これを試してみてください。
[Mongodb:mongoシェルのObjectIdから日付範囲クエリを実行]の可能な複製(https://stackoverflow.com/questions/13593896/mongodb-perform-a-date-range-query-from-the -objectid-in-the-mongo-shell) –
これは別の答えです。これは、タイムスタンプをobjectIDに変換する場合です。objectIDに特定の日付/時刻が含まれるようにしたいが、必ずしも現在の日時 –