首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongoose +聚合日期格式问题

Mongoose +聚合日期格式问题
EN

Stack Overflow用户
提问于 2018-10-17 10:21:19
回答 1查看 748关注 0票数 0

当我在mongo中执行以下查询时,它可以正常工作:

代码语言:javascript
复制
db.getCollection('patients').aggregate({
    "$match": {
    "demographics.dob": new Date("2018-01-17T00:00:00.000Z")
   }
})

但是,当我删除new ()时,它无法工作。

代码语言:javascript
复制
db.getCollection('patients').aggregate({
    "$match": {
    "demographics.dob": "2018-01-17T00:00:00.000Z"
   }
})

现在我要删除它的原因是,当我试图从express js发送日期时,它以字符串格式进行,下面是我的代码:

代码语言:javascript
复制
 filter["demographics.dob"] = new Date(filter["demographics.dob"]).toISOString();

我知道,总的来说,类型铸造不是在内部完成的,所以请建议我以其他方式进行:)

以下是猫鼬调试日志的结果:

代码语言:javascript
复制
    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
    }
    ],
    , {}
    )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-17 11:00:32

使用$dateFromString并在3.6版本中将$match更改为使用$expr

有点像

代码语言:javascript
复制
{"$match":{
  "$expr":{
  "$eq":[
    "$demographics.dob",
    {"$dateFromString":{"dateString":"2018-01-17T00:00:00.000Z"}}
  ]
  }
}}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52852570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档