26

ID を関連ドキュメントに ObjectId として格納することと、文字列リテラルとして格納することの利点はありますか?

ObjectID の使用:

{
   "_id": ObjectId("522bb79455449d881b004d27"),
   "username": "admin",
   "folder": ObjectId("522bb79455449d881b004d23")
}

対文字列:

{
   "_id": ObjectId("522bb79455449d881b004d27"),
   "username": "admin",
   "folder": "522bb79455449d881b004d23"
}

データをクライアントに送り返す API の場合...文字列を使用すると、データを「クリーンアップ」する必要がなくなります...とにかく、フォルダー ドキュメントを取得するために 2 番目のクエリを実行する必要があります。 .. ObjectId を使用する価値はありますか? (もしそうなら、なぜですか?)

ありがとう

4

3 に答える 3

14

簡単に言うと、たとえば、という名前のファイルを に短縮するlast_namelname、ドキュメントごとに 9 バイトを節約できます。コレクションに何百万ものドキュメントがある場合、これは本当に違いがあります。

于 2013-09-08T08:20:19.133 に答える
2

さらに、ObjectId() には、使用できる次の属性とメソッドがあります。

  1. str- オブジェクトの 16 進文字列表現を返します。日付として。

  2. ObjectId.toString() # JavaScript 表現を返します。

  3. ObjectId.getTimestamp() # オブジェクトのタイムスタンプ部分を返します

  4. ObjectId.valueOf()# オブジェクトの表現を 16 進文字列として返します

于 2020-12-09T01:10:38.327 に答える