105

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

フィールドの 1 つが日付\タイムスタンプであるスキーマを定義したいと思います。

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

Mongoose では Timestamp() メソッドを使用できないため、唯一のオプションは次の Javascript メソッドを使用することだと理解しています。

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

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

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

4

8 に答える 8

160

編集 - 2016 年 3 月 20 日

Mongoose は、コレクションのタイムスタンプをサポートするようになりました。

以下の@bobbyzの回答を検討してください。多分これはあなたが探しているものです。

元の答え

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

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

上記のフィールド定義では、timeフィールドが設定されていないドキュメントを保存すると、Mongoose はこのフィールドに現在の時刻を入力します。

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

于 2012-04-04T07:06:05.807 に答える
25

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);
于 2019-08-23T08:09:23.327 に答える
1

Mongoose はスキーマでタイムスタンプをサポートするようになりました。

const item = new Schema(
  {
    id: {
      type: String,
      required: true,
    },
  { timestamps: true },
);

これにより、作成される各レコードに フィールドcreatedAtとフィールドが追加されます。updatedAt

タイムスタンプ インターフェイスにはフィールドがあります

  interface SchemaTimestampsConfig {
    createdAt?: boolean | string;
    updatedAt?: boolean | string;
    currentTime?: () => (Date | number);
  }

これは、必要なフィールドを選択して日付形式を上書きするのに役立ちます。

于 2021-02-23T13:32:35.450 に答える
0

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

これは、オブジェクトを保存するたびに日付を「現在」に更新する必要があることを意味します。たぶん、これが役に立つでしょう: Moongoose create-modified プラグイン

于 2013-03-12T06:17:43.580 に答える
-4

初め :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

時刻はこの形式です。

于 2019-06-13T08:16:19.610 に答える