当我在mongo中执行以下查询时,它的工作正常:
db.getCollection('patients').aggregate({
"$match": {
"demographics.dob": new Date("2018-01-17T00:00:00.000Z")
}
})
但是当我删除新的Date()时,它不起作用。
db.getCollection('patients').aggregate({
"$match": {
"demographics.dob": "2018-01-17T00:00:00.000Z"
}
})
现在为什么要删除它,是因为当我尝试从express js发送日期时,它以字符串格式显示,下面是我的代码:
filter["demographics.dob"] = new Date(filter["demographics.dob"]).toISOString();
我知道总体而言,类型转换不是在内部完成的,因此请向我建议采用其他方式的方法:)
以下是猫鼬调试日志的结果:
patients.aggregate([
{
"$project": {
"demographics.legalFirstName": "$demographics.legalFirstName",
"demographics.lastName": "$demographics.lastName",
"updatedAt": "$updatedAt",
"_id": 1
}
},
{
"$match": {
"$and": [
{
"demographics.dob": "2018-01-17T00:00:00.000Z"
}
]
}
},
{
"$sort": {
"updatedAt": -1
}
},
{
"$skip": 0
},
{
"$limit": 2
}
],
, {}
)
答案 0 :(得分:1)
使用$dateFromString
并将$match
更改为在3.6版本中使用$expr
。
类似
{"$match":{
"$expr":{
"$eq":[
"$demographics.dob",
{"$dateFromString":{"dateString":"2018-01-17T00:00:00.000Z"}}
]
}
}}