検索クエリの結果として各文書の作成日を返す必要があります。それはかなり簡単ですが、私は、適切かつ効率的な最善の方法を見つけることができなかったと思います。各文書の作成時刻を返す
2つのオプションについて考えてみましょう。
タイムスタンプフィールドを含むドキュメントを挿入する。
ObjectId
フィールドの利点を試してください。私はcreated at
に到達できることを知っています。ObjectId("507c7f79bcf86cd7994f6c0e").getTimestamp()
が返されますが、これはISODate
形式で返されます。私はConvert ISO Date to Date Format yyyy-mm-dd format in javascript
使用することができます。しかし、私は疑問に思うDate
にISODate
を変換できるようにするには、はるかに効率的な方法でのObjectIdタイムスタンプを使用する方法はありませんでしょうか?
私が言っていることは、例で見ることができます。私はデータベース構造があると仮定します。
[{_id: "56c70fe39114aeb633b7f19f" , name: "alex"},
{_id: "56cb04630000000000000000" , name: "felix"}]
最初のオプションは、ドキュメントを挿入するときにタイムスタンプフィールドを追加します。だから、dbはなります。
[
{_id: "56c70fe39114aeb633b7f19f" , name: "alex", timestamp: ""},
{_id: "56cb04630000000000000000" , name: "felix", timestamp: ""}
]
クエリは次のように単純です。いずれのオプションで
db.collection.find({}, {name: 1, timestamp: 1}).toArray({
//loop through each document and convert timestamp to date object
})
二番目のオプションで
db.collection.find({}).toArray({
//loop through each document and convert objectId to isoDate and and convert it to date object.
})
、私は結果をトレースし、時間を変換する必要がありますか?何を指示してるんですか?
どちらも実用的ではありません。私は本当に、この状況を処理するモジュールがあるのだろうか?または行う方法は?
ありがとうございます。私は各文書の作成日を表示したいと思います。私は '_id'フィールドで' dateToString'を試していますが、**はBSONタイプのOIDからDateに変換できないと言っています**あなたは最初のオプションを選択し、新しい日付フィールドを追加することを提案しますか? – mmu36478
@ mmu36478はい、1つのクエリでそのジョブを実行するには、日付フィールドが必要です –