MongoDb如何减去2年并使用结果在Mongodb中找到该年(结果)

时间:2018-09-03 19:17:32

标签: database mongodb mongoose

我是MongoDB的新手,我有一个数据库,其中包含有关私营和上市公司的信息。诸如创立年份,员工人数,停滞期等信息(示例附有图片)

我只需要过滤在第三年之后成为Deadpool的公司,这意味着它们在创立年份后三年就成为了Deadpool。

我确实有创始年,但是死侍年份显示死侍的年份。我认为解决方案是在创建年份增加3年,并在所有数据库中过滤所有内容以确保该年份成为新的一年,因此我只能获得第三年陷入僵局的公司。

我将非常感谢您的帮助。

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

enter image description here

1 个答案:

答案 0 :(得分:0)

您有一些选择。如果您使用的是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运算符和聚合框架,但在您的情况下可能没有必要。