Store Moment dates in Mongo using Mongoose internally as millisecond timestamps.
$ npm install mongoose moment mongoose-moment
var mongoose = require('mongoose')
require('mongoose-moment')(mongoose);
Use the new SchemaType 'Moment'
in your schema definitions:
var mySchema = new mongoose.Schema({
created: 'Moment'
});
var MyModel = new mongoose.Model('MyModel', mySchema);
var Moment = require('moment');
var myModel = new MyModel({ created: new Moment() });
myModel.save();
var myModel = MyModel.findById('123', function(err, doc){
console.log(doc.created.format());
});
Mongoose doesn't transform query values according to schemas, so you'll have to do it yourself. Internally, Moment values are stored in the database as the number of milliseconds since the Unix epoch. To find a document using a Moment field, use a query like
MyModel.find({ created: new Moment('2014-03-29').valueOf() }, function(err, docs) {});
- Aaron Heckmann's mongoose-regexp