$subtract(聚合)

在本页面

定义

  • $subtract

    • 减去两个 numbers 以_返回差值,或者两个日期_return 差异(以毫秒为单位),或 date 和一个数字(以毫秒为单位)_返回结果 date。

$subtract表达式具有以下语法:

{ $subtract: [ <expression1>, <expression2> ] }

从第一个参数中减去第二个参数。

arguments 可以是任何有效表达作为 long,因为它们解析为 numbers and/or date。要从 date 中减去一个数字,date 必须是第一个参数。有关表达式的更多信息,请参阅表达式

例子

考虑带有以下文档的sales集合:

{ "_id" : 1, "item" : "abc", "price" : 10, "fee" : 2, "discount" : 5, "date" : ISODate("2014-03-01T08:00:00Z") }
{ "_id" : 2, "item" : "jkl", "price" : 20, "fee" : 1, "discount" : 2, "date" : ISODate("2014-03-01T09:00:00Z") }

减去 Numbers

以下聚合使用$subtract表达式通过从pricefee的小计中减去discount来计算total

db.sales.aggregate( [ { $project: { item: 1, total: { $subtract: [ { $add: [ "$price", "$fee" ] }, "$discount" ] } } } ] )

该操作返回以下结果:

{ "_id" : 1, "item" : "abc", "total" : 7 }
{ "_id" : 2, "item" : "jkl", "total" : 19 }

减去两个日期

以下聚合使用$subtract表达式从当前 date 中减去$date并返回以毫秒为单位的差异:

db.sales.aggregate( [ { $project: { item: 1, dateDifference: { $subtract: [ new Date(), "$date" ] } } } ] )

该操作返回以下结果:

{ "_id" : 1, "item" : "abc", "dateDifference" : NumberLong("11713985194") }
{ "_id" : 2, "item" : "jkl", "dateDifference" : NumberLong("11710385194") }

从 Date 减去毫秒数

以下聚合使用$subtract表达式从“$date”字段中减去 5 * 60 * 1000 毫秒(5 分钟):

db.sales.aggregate( [ { $project: { item: 1, dateDifference: { $subtract: [ "$date", 5 * 60 * 1000 ] } } } ] )

该操作返回以下结果:

{ "_id" : 1, "item" : "abc", "dateDifference" : ISODate("2014-03-01T07:55:00Z") }
{ "_id" : 2, "item" : "jkl", "dateDifference" : ISODate("2014-03-01T08:55:00Z") }
Updated at: 7 months ago
$substrCP(聚合)Table of content$sum(聚合)