Подтвердить что ты не робот

Какой SchemaType в Mongoose лучше всего подходит для отметки времени?

Я использую Mongoose, MongoDB и Node.

Я хотел бы определить схему, где одно из ее полей - дата \timestamp.

Я хотел бы использовать это поле, чтобы вернуть все записи, которые были обновлены за последние 5 минут.

Из-за того, что в Mongoose я не могу использовать метод Timestamp(), я понимаю, что мой единственный вариант - использовать следующий метод Javascript:

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

Вероятно, это не самый эффективный способ опроса обширной БД. Я был бы очень признателен, если бы кто-то мог поделиться более эффективным способом реализации этого.

Есть ли способ реализовать это с помощью Mongoose и иметь возможность использовать отметку времени MongoDB?

4b9b3361

Ответ 1

Изменить - 20 марта 2016 г.

Mongoose теперь поддерживает временные метки для коллекций.

Пожалуйста, рассмотрите ответ @bobbyz ниже. Может быть, это то, что вы ищете.

Оригинальный ответ

Mongoose поддерживает тип Date (который в основном является временной меткой):

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

Используя приведенное выше определение поля, каждый раз, когда вы сохраняете документ с неустановленным полем time, Mongoose заполнит это поле текущим временем.

Источник: http://mongoosejs.com/docs/guide.html

Ответ 2

Текущая версия Mongoose (v4.x) имеет временную тиснение как встроенный параметр для схемы:

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

Эта опция добавляет свойства createdAt и updatedAt, отмеченные меткой Date, и которая выполняет всю работу за вас. Каждый раз, когда вы обновляете документ, он обновляет свойство updatedAt. "Временные отметки схемы" .

Ответ 4

В случае, если вы хотите, чтобы пользовательские имена для ваших созданных и обновленных на

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

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

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

Ответ 5

Я хотел бы использовать это поле, чтобы вернуть все записи, которые были обновлены за последние 5 минут.

Это означает, что вам нужно обновлять дату до "сейчас" при каждом сохранении объекта. Возможно, вы найдете это полезным: Moongoose созданный с модификацией плагин

Ответ 6

Мне удалось реализовать время: {тип: Дата, по умолчанию: Date.now}, но дату, когда я открываю веб-страницу, она показывает: Дата заказа: сб 19 января 2019 03:27:36 GMT + 0000 (UTC). Как мне отделить его, чтобы показать только часть даты без времени в переднем конце: Дата заказа: сб 19 января 2019

Ответ 7

Во-первых: 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

Время в этом формате.