MongoDb, как вычесть 2 года и использовать результат, чтобы найти этот год (результат) в Mongodb - PullRequest
0 голосов
/ 03 сентября 2018

Я новичок в MongoDB, у меня есть база данных, которая содержит информацию о частных и публичных компаниях. такая информация, как год основания, количество сотрудников, годовой срок хранения и т. д. (образец прилагается на рисунке)

Мне нужно отфильтровать только те компании, которые были Deadpool после третьего года, это означает, что они были Deadpool через 3 года после основания.

У меня есть год основания, но год тупика показывает, в каком году он был тупиком. Я думаю, что решение состоит в том, чтобы добавить 3 года к году основания и отфильтровать все к этому новому году во всей базе данных, чтобы я мог получить только те компании, которые были тупиковыми на третий год.

Я буду очень признателен за помощь.

founded_year:2004
founded_month:8
founded_day:1
deadpooled_year:2008
deadpooled_month:3
deadpooled_day:3

введите описание изображения здесь

1 Ответ

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

У вас есть несколько вариантов. Если вы используете Mongo> = 3.6, вы можете использовать оператор $expr, который позволяет вам использовать более сложные операторы агрегирования и выполнять сравнение:

const query = {
  $expr: {
    $eq: [{
       $subtract: ['$deadpooled_year', '$founded_year']
      },
      3
    ]
  }
}
// Then perform your query as normal 
db.companies.find(query).then(...

Если 3.6 недоступен, вы можете использовать $where, который является менее производительным, и передать ему выражение / функцию, которая выполнит сравнение, например:

{ $where: function() { return this.deadpooled_year - this.founded_year === 3 } }

В качестве альтернативы вы можете использовать операторы $eq, $subtract, используя структуру агрегирования, но в вашем случае это может не потребоваться.

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