web-dev-qa-db-ja.com

MongooseのどのSchemaTypeがタイムスタンプに最適ですか?

Mongoose、MongoDB、およびNodeを使用しています。

フィールドの1つがdate\timestampであるスキーマを定義したいと思います。

最後の5分間に更新されたすべてのレコードを返すために、このフィールドを使用したいと思います。

MongooseではTimestamp()メソッドを使用できないという事実により、私の唯一のオプションは次のJavascriptメソッドを使用することであることを理解しています。

time : { type: Number, default: (new Date()).getTime() } 

恐らく巨大なDBをクエリするための最も効率的な方法ではありません。これを実装するより効率的な方法を誰かが共有できれば、本当に感謝しています。

Mongooseでこれを実装し、MongoDBタイムスタンプを使用できるようにする方法はありますか?

62
Liatz

編集-2016年3月20日

Mongooseで コレクションのタイムスタンプ がサポートされるようになりました。

以下の@bobbyzの答えを考慮してください。たぶんこれはあなたが探しているものです。

元の答え

MongooseはDate型(基本的にはタイムスタンプ)をサポートしています。

time : { type : Date, default: Date.now }

上記のフィールド定義により、未設定のtimeフィールドを使用してドキュメントを保存すると、Mongooseはこのフィールドに現在の時刻を入力します。

ソース: http://mongoosejs.com/docs/guide.html

106
drinchev

現在のバージョンのMongoose(v4.x)には、スキーマへの組み込みオプションとしてタイムスタンプがあります。

var mySchema = new mongoose.Schema( {name: String}, {timestamps: true} );

このオプションは、createdAtでタイムスタンプが付けられ、すべての作業を行うupdatedAtおよびDateプロパティを追加します。ドキュメントを更新するたびに、updatedAtプロパティが更新されます。 スキーマタイムスタンプドキュメント

93
bobbyz
var ItemSchema = new Schema({
    name : { type: String }
});

ItemSchema.set('timestamps', true); // this will add createdAt and updatedAt timestamps

ドキュメント: https://mongoosejs.com/docs/guide.html#timestamps

3
Nikolay_R

CreatedAtとupdatedAtの名前をカスタム名に変更する場合

const mongoose = require('mongoose');  
const { Schema } = mongoose;

const schemaOptions = {
  timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' },
};

const mySchema = new Schema({ name: String }, schemaOptions);
0
cegprakash

最初:_npm install mongoose-timestamp_

次:let Timestamps = require('mongoose-timestamp')

次:_let MySchema = new Schema_

次:MySchema.plugin(Timestamps)

次へ:const Collection = mongoose.model('Collection',MySchema)

その後、_Collection.createdAt_または_Collection.updatedAt_を好きな場所で使用できます。

作成日:曜日月月日00:00:00 GMT

時間はこの形式です。

0
shengsheng

過去5分間に更新されたすべてのレコードを返すために、このフィールドを使用したいと思います。

これは、オブジェクトを保存するたびに日付を「今」に更新する必要があることを意味します。多分あなたはこれが役に立つと思うでしょう: Moongoose create-modified plugin

0
Fletch