Найти объект из коллекции по дате создания - PullRequest
0 голосов
/ 27 марта 2020

У меня есть коллекция ticket_masters, которая содержит поле createAt, в котором хранятся дата и время.

[
    {
        "_id": "5e78f2ddc0e09128e81db47a",
        "NAME": "Jasin",
        "PHONE": "2252545414",
        "MAIL": "sdsdm@m.com",
        "createdAt": "2020-03-23T17:33:17.470Z",
        "updatedAt": "2020-03-23T17:33:17.470Z",
        "__v": 0
    }
]

Теперь я хочу найти записи в соответствии с полем createAt из пользовательской коллекции. Уже пробовал использовать следующий фрагмент кода.

db.getCollection('ticket_masters').find({
    "createdAt" : '2020-03-17T18:30:00.237+00:00'
    })

Вывод:

Fetched 0 record(s) in 1ms

Но в соответствии с приведенным фрагментом кода найдено ноль записей. Пожалуйста, помогите мне решить проблемы Спасибо

Ответы [ 2 ]

0 голосов
/ 27 марта 2020

Указав тип даты.

Оператор $eq сопоставляет документы, в которых значение поля равно указанному значению.

// Date and time

db.getCollection('ticket_masters').aggregate([
    {
        $match: {
           "createdAt": {$eq: new Date('2020-03-17T18:30:00.237+00:00')}
        }
    },
])

OR 

// Only Date

db.getCollection('ticket_masters').aggregate([
    {
        $match: {
           "createdAt": {"$gte": new Date("2020-03-17"), $lt : new Date("2020-03-18") }
        }
    },
])

Даты, которые вы сохранили, были new Date (), который включает компоненты времени. Чтобы запросить эти времена, вам нужно создать диапазон дат, который включает все моменты дня

Использование момент js

Пример:

// start today
var start = moment().startOf('day');
// end today
var end = moment(today).endOf('day');

{ createdAt: { '$gte': start, '$lte': end }

$gt Соответствует значениям, которые превышают указанное значение.

$lt Соответствует значениям, которые меньше указанного значения.

Для дополнительная информация: https://docs.mongodb.com/manual/reference/operator/query-comparison/

0 голосов
/ 27 марта 2020

Надеюсь, это вам поможет.

db.getCollection('ticket_masters').find({
    "createdAt" : ISODate("2020-03-17T18:30:00.237+00:00")
})

или вы можете попробовать это.

db.getCollection('ticket_masters').aggregate([
    {
        $match: {
            "createdAt":ISODate("2020-03-17T18:30:00.237+00:00")
        }
    },
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...