MongoDB получает предыдущую годовую запись с сегодняшнего дня, включая нулевые даты - PullRequest
1 голос
/ 07 мая 2020

Невозможно получить список предыдущих годовых записей с сегодняшнего дня, включая нулевые даты в узле MongoDB из коллекции контактов.

Sample Collection:
{
   "_id" : ObjectId("5cb6a9ee8f145b97daf7181b"),
   "Name" : "David",
   "Age" : "25",
   "JoiningDate" : 2019-06-01T06:18:22.359+00:00
}
{
   "_id" : ObjectId("5cb3a9ee8f1d1b75daf7181b"),
   "Name" : "Smith",
   "Age" : "28",
   "JoiningDate" : 2019-12-01T06:35:22.865+00:00
}
{
   "_id" : ObjectId("5cb3r4ee8f1d1b75daf7181b"),
   "Name" : "Peter",
   "Age" : "23",
   "JoiningDate" : null
}
{
   "_id" : ObjectId("5cb4w7ee8f1d1b75daf7181b"),
   "Name" : "Maria",
   "Age" : "23"
}
{
   "_id" : ObjectId("5cb9a9ee8f1d1b24daf7181b"),
   "Name" : "Alicia",
   "Age" : "24",
   "JoiningDate" : 2018-06-01T06:18:22.109+00:00
}

Мой код:

var collection = db.collection('Contacts');
var fromDate = new Date(Date.now() - 365*24*60*60 * 1000);
var data = collection.find({ $or: [{"JoiningDate":{$gt: fromDate}}, {"JoiningDate":{$eq: ''}} ]} );

Что не так Я делаю, поправьте меня пожалуйста!

1 Ответ

1 голос
/ 07 мая 2020

Поскольку undefined, null и someval имеют разные значения, ваш запрос должен охватывать все эти случаи, чтобы получить все данные.

Используйте этот запрос, который использует некоторые базовые c логическое логическое значение c для этого:

db.getCollection('test').find(
    {
        $or: [
            {"JoiningDate": {$gt: fromDate}},
            {"JoiningDate": {$eq: null}},
            {"JoiningDate": {$exists: false}}
        ]
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...