当我在mongo中执行以下查询时,它可以正常工作:
db.getCollection('patients').aggregate({
"$match": {
"demographics.dob": new Date("2018-01-17T00:00:00.000Z")
}
})但是,当我删除new ()时,它无法工作。
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
}
],
, {}
)发布于 2018-10-17 11:00:32
使用$dateFromString并在3.6版本中将$match更改为使用$expr。
有点像
{"$match":{
"$expr":{
"$eq":[
"$demographics.dob",
{"$dateFromString":{"dateString":"2018-01-17T00:00:00.000Z"}}
]
}
}}https://stackoverflow.com/questions/52852570
复制相似问题