如何使用mongoose查询mongodb +在结果中添加创建日期

时间:2014-08-09 09:36:47

标签: mongoose

我想将创建日期添加到mongoose返回的结果中。我知道mongodb记录的_id属性中嵌入了创建日期,但我不确定如何将它添加到结果集中,以便我可以在客户端应用程序中使用它。

有关如何动态地将该属性添加到结果集的任何想法吗?

3 个答案:

答案 0 :(得分:2)

如果您愿意将_id的时间戳用作创建日期

var fooSchema = new Schema({
      name: String,
      ... 
},
{
  toObject: { virtuals: true },
  toJSON: { virtuals: true }
}
)


fooSchema.virtual('created')
  .get(function(){ 
     return this._id.getTimestamp();
  });

您可以访问字段created以获取时间戳。 从{mongoose文档转换时,toObjectdoc)和toJsondoc)选项用于保留我们的虚拟字段(已创建)。使用toJson可能就足够了,取决于您的使用情况。

如果您不愿意使用_id的时间戳(有许多参数在跨多个实例操作时不可取),您可以将它放在单独的字段中,如

var fooSchema = new Schema({
      name: String,
      created:  {type: Date, default: Date.now},
});

这会将created设置为首次保存对象的时间戳。

答案 1 :(得分:1)

猫鼬可以自动为您完成。根据猫鼬中的timestamp option,只需执行以下操作:

computed: {
      bets() {
        console.log('yep');
        return _.orderBy(this.bets, 'created_at')
      }
    },

您还可以使用var nSchema=new Schema({ name:String, ... timestamps: { createdAt: 'created_at' }, ... });

跟踪更新

答案 2 :(得分:0)

我更喜欢ma08的第二种方式。添​​加一个创建的字段并使用默认值Date.now.This方法自动创建当前日期作为创建日期。

var nSchema=new Schema({
name:String,
...
created: {type:Date, default:Date.now},
...

});