Почему метод агрегата ($ date) не работает в MongoDB - PullRequest
0 голосов
/ 17 сентября 2018

Почему работает код ниже

 db.getCollection('CustomerData').aggregate([       
    {$addFields: {
        "month": {$month: new Date("2018-09-18T00:00:00.000Z")},       
        "year": {$year: new Date("2018-09-18T00:00:00.000Z")}
         }
    },
    {$match: { month: 9, year: 2018, flag: 'dealer' } }
])

Но не это

 db.getCollection('CustomerData').aggregate([       
    {$addFields: {
        "month": {$month: new Date("$date")},       
        "year": {$year: new Date("$date")}
         }
    },
    {$match: { month: 9, year: 2018, flag: 'dealer' } }
])

Примечание: В документеесть поле даты.Я использую MongoClient.пример данных.

{
"_id" : ObjectId("5b9ed3f221f0c70c7c0fd035"),
"customerName" : "aaa",    
"date" : "2018-09-18T00:00:00.000Z",    
"flag" : "dealer"
}

1 Ответ

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

Правильный оператор mongodb - $dateFromString.

db.getCollection('CustomerData').aggregate([       
    {$addFields:{
        "month":{$month:{$dateFromString:{
    dateString:"$date"}}},
        "year":{$year:{$dateFromString:{
    dateString:"$date"}}}
    }},
    {$match:{month:9,year:2018,flag:'dealer'}}
])

. Вы можете выполнить конвейер агрегации в обычном запросе в 3.6.Я тоже добавлю это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...