【发布时间】:2021-11-09 21:05:06
【问题描述】:
我是NodeJS 的新手。我在MongoDB 中有一个集合,其中包含如下所示的Data
[{
_id: new ObjectId("6180c67a9b414de991a24c43"),
cusDate: '20/11/2021 03:32 AM',
cusName: 'Akila',
cusEmail: 'akila@gmail.com',
__v: 0
},
{
_id: new ObjectId("6180c67a9bt14de991a24c43"),
cusDate: '02/08/2021 08:12 AM',
cusName: 'Booth',
cusEmail: 'booth@gmail.com',
__v: 0
},
{
_id: new ObjectId("u180c67a9b414de991a24c43"),
cusDate: '12/07/2020 11:38 AM',
cusName: 'Sam',
cusEmail: 'sam@gmail.com',
__v: 0
}, {
_id: new ObjectId("61y0c67a9b414de991a24c43"),
cusDate: '22/01/2021 07:42 AM',
cusName: 'Ram',
cusEmail: 'ram@gmail.com',
__v: 0
},
]
我想根据cusDate 从Collection 查找并获取数据。
fromCusDate: 01/06/2020 12:00 AM
toCusDate: 01/03/2021 12:00 PM
所需输出:
[
{
_id: new ObjectId("u180c67a9b414de991a24c43"),
cusDate: '12/07/2020 11:38 AM',
cusName: 'Sam',
cusEmail: 'sam@gmail.com',
__v: 0
}, {
_id: new ObjectId("61y0c67a9b414de991a24c43"),
cusDate: '22/01/2021 07:42 AM',
cusName: 'Ram',
cusEmail: 'ram@gmail.com',
__v: 0
},
]
我的cusDate 是字符串数据类型。字符串日期格式为DD/MM/YYYY hh:mm A
这是我尝试过的代码,
let getOrdersData = await collection.find({ "cusDate": { "$gte": "01/06/2020 12:00 AM", "$lt": "01/03/2021 12:00 PM" } })
但我的日期是 String collection 中的数据类型。所以我无法获取该数据。
我不知道如何获取这些数据。我想知道 Mongoose 查询来获取这些数据。
let getOrdersMonth = await collection.find({ "cusDate": { "$gte": "01/06/2020 12:00 AM", "$lt": "01/03/2021 12:00 PM" } })
我找到了这个答案。 stackoverflow answer。但它是一个 mongodb 查询。我需要一个猫鼬查询。我搜索了stackoverflow,但找不到任何答案。请帮我解决一些问题。
【问题讨论】:
-
从你找到的mongodb版本答案中适配mongoose版本的时候有遇到什么具体问题吗? AFAIK,convert mongodb native aggregation to mongoose 应该不费吹灰之力。您能否分享您当前的尝试以及您遇到的具体错误,以便我们更好地了解?
-
我需要一个猫鼬查询来实现这一点。我的日期是字符串类型。我试过这个。
await Collection.find({ "cusDate": { "$gte": new Date("01/11/2021 12:00 PM") } })。我没有数据。计数为 0。 -
你可以在这里找到这个问题的答案:stackoverflow.com/questions/2943222/…
-
mongoose 只是一个定义数据模型的框架。它是 mongodb,查询是相同的——可能除了
await命令。 -
您应该永远将日期/时间值存储为字符串,这是一个设计缺陷。始终正确存储
Date对象。根据$dateFromString 的说法,MongoDB 本身不支持“AM/PM”12 小时格式,因此您必须使用 3rd 方库或编写自己的复杂函数。不妨试试moment.js 库,它支持解析几乎任何格式的日期值。
标签: javascript node.js mongodb express