我是MongoDB的新手,我有一个数据库,其中包含有关私营和上市公司的信息。诸如创立年份,员工人数,停滞期等信息(示例附有图片)
我只需要过滤在第三年之后成为Deadpool的公司,这意味着它们在创立年份后三年就成为了Deadpool。
我确实有创始年,但是死侍年份显示死侍的年份。我认为解决方案是在创建年份增加3年,并在所有数据库中过滤所有内容以确保该年份成为新的一年,因此我只能获得第三年陷入僵局的公司。我将非常感谢您的帮助。
founded_year:2004
founded_month:8
founded_day:1
deadpooled_year:2008
deadpooled_month:3
deadpooled_day:3
答案 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
运算符和聚合框架,但在您的情况下可能没有必要。