尝试计算MongoDB中两个字段之间的差异

efzxgjgh  于 2022-12-12  发布在  Go
关注(0)|答案(2)|浏览(300)

晚上好。我在MongoDB中有一个项目,在尝试运行我的最后一个查询时,我总是得到一个错误。我拥有的数据集是关于葡萄酒的。我想做的是打印与红酒类别匹配的葡萄酒,并且至少有20年的历史(我有一个开始日期-它们被放入桶中的日期-和一个结束日期,它们被装瓶的日期)。注意:我希望所有这些字段都打印在最后,并且根据它们的评级打印。
让我给予一个数据的例子:

{ _id: ObjectId("638f389d8830abb3f19aaf51"),
tconst: 'tt0040030',
wineType: 'Red',
Brand: '#brand',
startYear: 1990,
endYear: 2002
rating:6.6}

当我使用$match函数作为我的三个标准时,一切都很好,但是我还没有弄清楚如何减去两个日期字段,这样我就可以找到至少20年的葡萄酒,并正确地打印结果。

tf7tbtn2

tf7tbtn21#

在mongoDB中,$where查询操作符用于比较最符合java脚本表达式的字段或文档。我们还可以传递一个字符串

6bc51xsx

6bc51xsx2#

查询

  • 您需要引用一个字段来计算差值,因此需要$expr和聚合运算符
  • 风箱存放red酒,用years difference>=20,然后按rating进行排序。

Playmongo

aggregate(
[{"$match": 
   {"$expr": 
     {"$and": 
       [{"$eq": ["$wineType", "Red"]},
         {"$gte": [{"$subtract": ["$endYear", "$startYear"]}, 20]}]}}},
 {"$sort": {"rating": -1}}])

相关问题