【问题标题】:mongoose.js: finding data entries by daymongoose.js:按天查找数据条目
【发布时间】:2012-07-31 22:01:07
【问题描述】:

假设这是你的模型:

var EventSchema = new Schema({
    title: String,
    startDate: Date,
    endDate: Date
});

我想输入一个日期(就像“24-12-2012”一样简单),然后检索在这一天开始或进行的每个事件。

你是怎么做到的?

【问题讨论】:

标签: node.js mongodb mongoose


【解决方案1】:

当然:

首先阅读 mongo 日期查询语法,这是日期范围的操作方法:http://cookbook.mongodb.org/patterns/date_range/

然后将 mongo 语法翻译成 mongoose。

Event.where('startDate').lte(yourDate).exec(callback); //should do the trick

现在您只需将日期字符串解析为 javascript 日期。有一些很酷的库可以做到这一点,我相信moment.js 不会有那个日期字符串的问题。

哦,我忘了最后一点魔法:将该查询放入附加到事件模型的static method 中,这样从现在开始您就可以调用

Event.earlierThan(yourDate, callback); //Where your custom static is called 'earlierThan'.

【讨论】:

  • 感谢您的见解。据我了解您的代码,您将检索在给定日期之前开始的每个事件。因此,如果我想在一天内获得所有内容,我应该执行 .gte("24-12-2012 00:00").lte("24-12-2012 23:59") 吗?另外,前一天开始但当天结束的事件呢?
  • 你好。正确,是的,对于最后一种情况:只需使用...where('endDate).lte(yourDate)。 :)
  • 对您上面的评论进行更正:ltegte 可能不适用于您的 "24-12-2012 00:00" 等字符串,请确保先将它们解析为 Javascript 日期!
猜你喜欢
  • 2016-04-24
  • 2020-10-12
  • 1970-01-01
  • 2017-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-20
  • 2016-03-11
相关资源
最近更新 更多