| 类别 | 操作符 | 语法 | 功能用途 |
|---|---|---|---|
| 逻辑运算符 | $add、$subtract、$mul、$divide | ||
| 布尔表达式 | $and | {$and: [ |
如果所有表达式的值为true,那就返回true,否则返回false。 |
| $or | {$or: [ |
只要有任意表达式的值为true,那就返回true,否则返回false。 | |
| $not | { $not: [ |
对expression取反。 | |
| 控制表达式 | $cond | { $cond: { if: 或者 { $cond: [ |
如果boolean-expression为的值是true,那就返回true-case,否则返回false-case。 |
| $ifNull | { $ifNull: [ |
如果expression是null,那就返回replacement-expression-if-null,否则返回expression。 | |
| 比较表达式 | $cmp | { $cmp: [ |
比较expression1和expression2,如果相等,返回0;如果前者大于后者,返回一个正数1;如果前者小于后者。返回一个负数-1。 |
| $strcasecmp | { $strcasecmp: [ |
$cmp的细化。用来比较expression1和expression2;区分大小写,主要针对ASCII characters。如果相等,返回0;如果前者大于后者,返回一个正数1;如果前者小于后者。返回一个负数-1。 | |
| $eq/$ne/$gt/$gte/$lt/$lte | $eq/$ne/$gt/$gte/$lt/$lte :[ |
对expression1和expression2执行相应的比较操作,返回比较的结构(true或false)。 |
1、$add
加法运算,基础语法:{ $add : [ < expression1 > , < expression2 > , ... ] }
2、$subtract
减法运算,基础语法:{ $subtract: [ <expression1>, <expression2> ] } expression1减去expression2
3、$multiply
乘法运算,基础语法:{ $multiply : [ < expression1 > , < expression2 > , ... ] }
4、$divide
除法运算,基础语法:{ $divide: [ <expression1>, <expression2> ] }expression1为被除数,expression2为除数
有文档3个
{**"_id": 1,"item":"abc","price": 10,"fee": 2,date: ISODate("2014-03-01T08:00:00Z"**) }{**"_id": 2,"item":"jkl","price": 20,"fee": 1,date: ISODate("2014-03-01T09:00:00Z"**) }{**"_id": 3,"item":"xyz","price": 5,"fee": 10,date: ISODate("2014-03-15T09:00:00Z"**) }
求和
db.sales.aggregate([{ $project: { item: 1, total: { $add: [ "$price", "$fee" ] }}}])
结果:
{ “_id” : 1, “item” : “abc”, “total” : 12 } { “_id” : 2, “item” : “jkl”, “total” : 21 } { “_id” : 3, “item” : “xyz”, “total” : 15 }
date字段数据 + 3天
db.sales.aggregate([{ $project: { item: 1, expire_date: { $add: [ "$date", 3*24*60*60*1000 ] } } }])
结果显示为 :
{ “_id” : 1, “item” : “abc”, “expire_date” : ISODate(“2014-03-04T08:00:00Z”) } { “_id” : 2, “item” : “jkl”, “expire_date” : ISODate(“2014-03-04T09:00:00Z”) } { “_id” : 3, “item” : “xyz”, “expire_date” : ISODate(“2014-03-18T09:00:00Z”) }
求差
求积
db.sales.aggregate([{ $project: { item: 1, total_price: { $multiply: [ "$price", "$fee" ] } } }])
结果:
{ “_id” : 1, “item” : “abc”, “total_price” : 20 } { “_id” : 2, “item” : “jkl”, “total_price” : 20 } { “_id” : 3, “item” : “xyz”, “total_price” : 50 }
重新插入documents
{ “_id” : 1, “name” : “A”, “hours” : 80, “resources” : 7 }, { “_id” : 2, “name” : “B”, “hours” : 40, “resources” : 4 }
求商
db.planning.aggregate([{ $project: { name: 1, workdays: { $divide: [ "$hours", 8 ] } } }])
结果取整:
{ “_id” : 1, “name” : “A”, “workdays” : 10 }
{ “_id” : 2, “name” : “B”, “workdays” : 5 }
db.planning.aggregate([{ $project: { remainder: { $mod: [ "$hours", "$tasks" ] } } }])
结果取余:
{ “_id” : 1, “remainder” : 3 }
{ “_id” : 2, “remainder” : 0 }
