【问题标题】:Meteor/mongo get records created one month ago [closed]Meteor/mongo 获取一个月前创建的记录[关闭]
【发布时间】:2015-11-17 15:53:21
【问题描述】:

如何从一个月前使用 moment.js 创建的集合中获取记录,返回所有记录的计数。

我的收藏代码是:

Products.find() // where start and end date is one month ago and  products is the collection

这可能是一个愚蠢的问题,但是,由于我是从 rails 到 javascript/meteor,所以有一点帮助就可以了。

示例文档

 {
        "_id": "xxx",
        "name": "xxx",
        "description": "xxx",
        "createdAt": "2015-04-18T04:40:00Z",
        "productType": "Flavoured Milk",
        "opt1": "Packaging",
        "opt2": "Weight",
        "supplier": "xxx",
        "brand": "xxx"
        "status": "active",
        "tags": ["xxx","xxx"],
        "updatedAt": "2015-04-18T04:40:00Z"
    }

【问题讨论】:

  • Uchenna,你试过什么?你也是从它们创建的那一天开始测量的吗?还是startend date?你能写出你的documents的一个样本吗?
  • 这个问题至少需要一个文档示例才能回答。
  • @inspired 我更新了我的问题
  • 我从一个月前开始测量
  • 我在发布此问题之前尝试了所有答案,但没有成功。再次查看我的文件,发现一个月前我没有创建任何文件。感谢您的帮助

标签: javascript mongodb meteor momentjs


【解决方案1】:

您可以通过以下方式获取一个月前的日期对象:

moment().subtract(1, "months").toDate();

我假设您在 Products 集合上有字段 createdAt。因此,查找一个月前创建的所有产品的查询将是:

var oneMonthAgo = moment().subtract('months', 1).toDate();

Products.find({ createdAt: oneMonthAgo })

但请记住,上述解决方案将仅返回恰好一个月前精确到秒创建的记录。

【讨论】:

  • 我实际上已经考虑过这个,但不确定它是否会起作用。但是会试一试。谢谢
  • 您的答案已被弃用。它应该是句号之前的数字。
  • @UchennaOkafor 谢谢。我已经更新了我的答案。
【解决方案2】:

乌切纳,

Moment.js 2.8.0 中,您可以这样做:

var comparison = moment().subtract(1, 'months').toDate();

Products.find({ createdAt: comparison });

根据文档:

在 2.8.0 版本之前,moment#subtract(String, Number) 语法是 也支持。它已被弃用,取而代之的是 moment#subtract(Number, String).

【讨论】:

  • 是的,想通了。只是我懒惰。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-07
相关资源
最近更新 更多