首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在mongodb中查找日期之间的数据?

在mongodb中查找日期之间的数据?
EN

Stack Overflow用户
提问于 2018-05-31 01:55:24
回答 1查看 105关注 0票数 1

我想要得到在过去10天内修改过的所有记录。在数据库中,我有一个列LastModifiedDate。在此基础上,我想用MongoDB编写过滤器查询。以下是集合所有者的格式:

代码语言:javascript
复制
[
  {
    "_id": ObjectId("5b0ca634806bebc3584d9dc2"),
    "ownerKey": "WEST PIONEER LLC, ID",
    "isCorporation": true,
    "corpName": "WEST PIONEER LLC",
    "propertyMailingAddress": {
      "poBox": "",
      "street": "250 S 5TH ST",
      "house": "",
      "apartment": "2",
      "city": "BOISE",
      "state": "ID",
      "zip": "83702",
      "type": "UNKNOWN",
      "sources": [
        "SNL"
      ]
    },
    "contacts": [],
    "createDate": {
      "year": 2018,
      "month": 5,
      "day": 28
    },
    "history": [],
    "sources": [
      "SNL"
    ],
    "lastModifiedDate": "2018-05-29T01:00:36.533Z"
  }
]

我正在使用以下查询查询数据:

代码语言:javascript
复制
 db.collection.aggregate([
  {
    $project: {
      date: {
        $dateFromString: {
          dateString: "$lastModifiedDate"
        }
      }
    }
  },
  {
    $match: {
      date: {
        $gte: new Date((new Date().getTime()-(10*24*60*60*1000)))
      }
    }
  }
])

但这不是过滤查询。我找到了一个聚合查询的方法,相反,我想要一个可以在Mongo Compass中执行的过滤器查询。

EN

回答 1

Stack Overflow用户

发布于 2018-05-31 08:12:57

在上面提到的集合文档中,lastModifiedDate是一个字符串。需要先转换为ISODate对象,再进行减法运算。下面的查询应该可以工作。

代码语言:javascript
复制
db.owners.aggregate([{$project:{"_id":1,"cdate":{$dateFromString:{"dateString":"$lastModifiedDate"}}}},{$project:{"_id":1,diff_msecs:{$subtract:[new ISODate(),"$cdate"]}}},{$project:{"_id":1,diff_days:{$divide:["$diff_msecs",1000*60*60*24]}}},{$match:{"diff_days":{"$lte":10}}}])

初始投影将lastModifiedDate从字符串转换为IsoDate。第二个项目从当前日期减去,然后从毫秒转换为天,最后比较结果是否小于10。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50610829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档