[node.js] Mongoose의 어떤 SchemaType이 타임 스탬프에 가장 적합합니까?

Mongoose, MongoDB 및 Node를 사용하고 있습니다.

필드 중 하나가 date \ timestamp 인 스키마를 정의하고 싶습니다.

지난 5 분 동안 업데이트 된 모든 레코드를 반환하기 위해이 필드를 사용하고 싶습니다.

Mongoose에서는 Timestamp () 메서드를 사용할 수 없기 때문에 다음 Javascript 메서드를 사용하는 것이 유일한 옵션임을 이해합니다.

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

방대한 DB를 쿼리하는 가장 효율적인 방법은 아닐 것입니다. 누군가가 이것을 구현하는 더 효율적인 방법을 공유 할 수 있다면 정말 감사하겠습니다.

Mongoose로 이것을 구현하고 MongoDB 타임 스탬프를 사용할 수있는 방법이 있습니까?



답변

편집-2016 년 3 월 20 일

Mongoose는 이제 컬렉션에 대한 타임 스탬프를 지원 합니다.

아래 @bobbyz대답을 고려하십시오 . 아마도 이것은 당신이 찾고있는 것입니다.

원래 답변

Mongoose는 Date유형 (기본적으로 타임 스탬프)을 지원합니다.

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

위의 필드 정의를 사용하면 필드가 설정되지 않은 문서를 저장할 때마다 timeMongoose가이 필드를 현재 시간으로 채 웁니다.

출처 : http://mongoosejs.com/docs/guide.html


답변

현재 버전의 Mongoose (v4.x)에는 스키마에 대한 기본 제공 옵션으로 타임 스탬프가 있습니다.

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

이 옵션 은로 타임 스탬프가 찍힌 속성을 추가 createdAt하고 모든 작업을 수행합니다. 문서를 업데이트 할 때마다 속성 이 업데이트 됩니다. 스키마 타임 스탬프 문서.updatedAtDateupdatedAt


답변

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);


답변

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


답변

지난 5 분 동안 업데이트 된 모든 레코드를 반환하기 위해이 필드를 사용하고 싶습니다.

즉, 개체를 저장할 때마다 날짜를 “지금”으로 업데이트해야합니다. 아마도 이것이 유용 할 것입니다 : Moongoose create-modified plugin


답변

첫째 : 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

시간은이 형식입니다.


답변