我直到今天才使用$ gte在mongodb中获取数据

问题描述 投票:0回答:1

我想要的是让在此日期范围内在该帐户中创建帐户的用户,也希望为那些新客户获取订单数大于1的客户,因此我正在尝试获取数据比上个月(即2020年3月1日)大,但输出给我的用户直到4月1日,为什么不到今天(即4月11日),数据采用以下格式

"_id" : ObjectId("1dv47sd1a10048521sa1234d"),
"updatedAt" : ISODate("2020-04-01T16:19:26.460+05:30"),
"createdAt" : ISODate("2020-04-01T16:18:46.066+05:30"),
"email" : "[email protected]",
"phone" : "xxxxxxxxxx",
"password" : "$awdad$2b$10$4YaO6AEZqXA9ba0iz14ALi",
"dob" : "00/20/1990",
"stripeID" : "xxxxxxxxxxxxxxxx",
"__t" : "Customer",
"banned" : false,
"picture" : "link to image",
"name" : {
    "first" : "ababab",
    "last" : "Saaa"
},
"orderCount" : 2,
"creditCards" : [ ],
"addresses" : [ ],
"__v" : 0,
"isEmailVerified" : true

我写了一个查询来从大于上个月的日期中提取数据,但是它给了我直到4月1日的数据,我的查询如下

db.users.find({
  "createdAt" : { "$gte" :new Date("2020-03-1") }
})

所以我想今天从2020年3月1日开始获取数据,订单数量也更多,那么1,谢谢,我对mongo感到陌生

mongodb
1个回答
0
投票

MongoDB仅存储时间,不存储日期。因此,通常应使用时间而不是日期来指定查询。

此外,MongoDB始终将时间存储在UTC中。不同的系统可以在不同的时区中运行。例如,外壳程序可能在与您的应用程序不同的时区中运行。

要使用日期查询:

  1. 确定日期所在的时区。
  2. 将日期转换为该时区中的时间。例如,2020-03-01 00:00:00 UTC - 2020-03-31 23:59:59 UTC2020-03-01 00:00:00 -0400 - 2020-03-31 23:59:59 -0400均为“三月”,并且将匹配不同的文档集。
  3. 使用时间来构造MongoDB查询。
© www.soinside.com 2019 - 2024. All rights reserved.