我有一个ticket_masters集合,其中包含createdAt字段,并存储日期和时间。
[
{
"_id": "5e78f2ddc0e09128e81db47a",
"NAME": "Jasin",
"PHONE": "2252545414",
"MAIL": "sdsdm@m.com",
"createdAt": "2020-03-23T17:33:17.470Z",
"updatedAt": "2020-03-23T17:33:17.470Z",
"__v": 0
}
]
现在我想根据用户集合中的createAt字段查找记录。已经尝试使用以下代码段。
db.getCollection('ticket_masters').find({
"createdAt" : '2020-03-17T18:30:00.237+00:00'
})
输出:
Fetched 0 record(s) in 1ms
但是根据上面的代码片段找到了零条记录。请帮助我解决问题 谢谢
答案 0 :(得分:0)
希望这会对您有所帮助。
db.getCollection('ticket_masters').find({
"createdAt" : ISODate("2020-03-17T18:30:00.237+00:00")
})
或者您可以尝试这个。
db.getCollection('ticket_masters').aggregate([
{
$match: {
"createdAt":ISODate("2020-03-17T18:30:00.237+00:00")
}
},
])
答案 1 :(得分:0)
通过指定日期类型。
$eq
运算符匹配字段值等于指定值的文档。
// Date and time
db.getCollection('ticket_masters').aggregate([
{
$match: {
"createdAt": {$eq: new Date('2020-03-17T18:30:00.237+00:00')}
}
},
])
OR
// Only Date
db.getCollection('ticket_masters').aggregate([
{
$match: {
"createdAt": {"$gte": new Date("2020-03-17"), $lt : new Date("2020-03-18") }
}
},
])
您保存的日期是新的Date(),其中包括时间成分。要查询这些时间,您需要创建一个包含一天中所有时刻的日期范围
使用momentjs
示例:
// start today
var start = moment().startOf('day');
// end today
var end = moment(today).endOf('day');
{ createdAt: { '$gte': start, '$lte': end }
$gt
匹配大于指定值的值。
$lt
匹配小于指定值的值。
有关更多信息:https://docs.mongodb.com/manual/reference/operator/query-comparison/