2016-04-11 4 views
1

Как создать поле даты со значением по умолчанию, значение по умолчанию должно быть текущим временным метром всякий раз, когда вставка произошла в коллекции.Mongo db default timestamp

+0

Вы используете какой-либо драйвер? язык программирования? – styvane

+0

Мы получаем данные от .Net-услуг .. но у этой части нет доступа. Есть ли способ создать поле в самой настройке Mongo. –

+0

Как вы вставляете документ? вы используете драйвер 'mongodb-csharp' или оболочку? – styvane

ответ

1

Вы просто сделаете это при вставке ... для текущего timestamp.

collection.insert({ "date": datetime.now() } 
+0

Спасибо thalaiva .. Этот запрос, с которым мы можем справиться, чтобы запускать каждую вставку через запрос, я согласен с этим. Есть ли способ обработать эту вставку даты с помощью такой конфигурации, как концепция RDBMS, ниже запрос @columnName datetime default CURRENT_TIMESTAMP –

+0

@JagadeesanG: вам понадобится mongoose, если вы идете со схемой ... mongodb - такая схема. http://mongoosejs.com/docs/2.7.x/docs/schematypes.html – Thalaivar

2

Thats pretty simple! Когда вы используете Mongoose, например, вы можете передавать функции в качестве значения по умолчанию. Затем Mongoose вызывает функцию для каждой вставки.

Так что в вашей схеме вы могли бы сделать что-то вроде:

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

Не забудьте только передать объект функции самого Date.now, а не значение вызова функции Date.now() как это будет только установить дату, как только к значению когда ваша схема была создана.

Это решение относится к Mongoose & Node.Js, и я надеюсь, что это ваш usecase, потому что вы не уточнили это более точно.

0

Спасибо друзья .. Я нашел другой способ получить временную метку из поля _id. objectid.gettimestamp() из этого мы можем получить его штамп времени.

0

Это немного старый, но я использую метод Date.now(), он не получает текущую дату и время, он застревает в то время, когда вы запустили свой процесс узла. Таким образом, все временные метки будут установлены по умолчанию на Date.now(), когда вы запустили свой сервер. Один из способов, которым я занимался, состоял в том, чтобы сделать следующее:

ExampleSchema.pre('save', function (next) { 
    const instanceOfSchema = this; 
    if(!instanceOfSchema.created_at){ 
     instanceOfSchema.created_at = Date.now(); 
    } 
    instanceOfSchema.updated_at = Date.now(); 
    next(); 
})