9

ダミー コレクションを作成し、インポートしたいと考えています。各項目のフィールドの 1 つは、「作成」フィールドと「更新」フィールドです。MongoDb が現在の日付と時刻をインポート時の値として使用できるようにするには、source/json ファイルに何を入れることができますか?

これはうまくいきません

"created" : Date()
4

2 に答える 2

14

mongoimportCSV、TSV、または JSON 形式の既存のデータをインポートすることを目的としています。新しいフィールド (createdタイムスタンプなど) を挿入する場合は、それらの値を設定する必要があります。

たとえば、createdタイムスタンプを現在の時刻に設定する場合は、コマンド ラインから UNIX タイムスタンプを取得できます (エポックからの秒数になります)。

$ date +%s
1349960286

想定されるJSON<date>表現mongoimport、エポックからのミリ秒を表す 64 ビットの符号付き整数です。unixtime 秒の値に 1000 を掛けて、JSON ファイルに含める必要があります。

{ "created": Date(1349960286000) }

別の方法として、作成されたタイムスタンプをドキュメントの挿入後にドキュメントに追加する方法があります。

例えば:

db.mycoll.update(
    {created: { $exists : false }},    // Query criteria
    { $set : { created: new Date() }}, // Add 'created' timestamp
    false, // upsert
    true   // update all matching documents
)   
于 2012-10-11T13:20:35.490 に答える
3

Stennie が正しく指摘したように、mongoimportorだけでこれを行うことはできませんmongorestore。これらは、以前にダンプしたデータを復元するためだけのものです。これを行う正しい方法は、データを復元してから、復元されたデータを更新することです。

新しい mongo 2.6では、時刻を現在のタイムスタンプに更新するために作成された$currentDate操作を使用して、これを簡単に行うことができます。

あなたの場合、次のようなものが必要です

db.users.update( 
  {},
  {
     $currentDate: {
      created: true,
      updated: true
     },
  }
) 
于 2013-10-25T09:08:37.633 に答える