Мангуст + Совокупный формат даты выпуска - PullRequest
0 голосов
/ 17 октября 2018

Когда я выполняю следующий запрос в монго, он работает нормально:

db.getCollection('patients').aggregate({
    "$match": {
    "demographics.dob": new Date("2018-01-17T00:00:00.000Z")
   }
})

Но когда я удаляю new Date () , он не работает.

db.getCollection('patients').aggregate({
    "$match": {
    "demographics.dob": "2018-01-17T00:00:00.000Z"
   }
})

Теперь, почему я хочу удалить это, потому что, когда я пытаюсь отправить дату из экспресс-js, она идет в строковом формате, следующий мой код:

 filter["demographics.dob"] = new Date(filter["demographics.dob"]).toISOString();

Я знаю, что вагрегат, приведение типов не выполняется внутренне, поэтому, пожалуйста, предложите мне способ сделать это другим способом:)

Ниже приведен результат журнала отладки mongoose:

    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
    }
    ],
    , {}
    )

1 Ответ

0 голосов
/ 17 октября 2018

Используйте $dateFromString и измените $match на $expr в версии 3.6.

Что-то вроде

{"$match":{
  "$expr":{
  "$eq":[
    "$demographics.dob",
    {"$dateFromString":{"dateString":"2018-01-17T00:00:00.000Z"}}
  ]
  }
}}
...