0
点赞
收藏
分享

微信扫一扫

MongoDB使用$project投射表达式查询

司马吹风 2022-01-28 阅读 51

目录


$project为投射查询 ,即将一个数据结果映射为另一个结果 过程中可以对某些数据进行修改 控制其最终显示的结果。

1、原字段查询

原字段查询,_id-默认显示,0-表示不显示,1-表示显示,如何只是原字段查询和find()一致

# 比如:select userid,price from test
db.test.aggregate(
	{"$project":{
  	  "_id":0,
	  "userid":1,
      "price":1,
    }})

效果:
在这里插入图片描述

2、数学表达式查询

数学表达式查询,类型如下:
{"$add":[expr1,expr2,...,exprN]} #相加
{"$subtract":[expr1,expr2]} #第一个减第二个
{"$multiply":[expr1,expr2,...,exprN]} #相乘
{"$divide":[expr1,expr2]} #第一个表达式除以第二个表达式的商作为结果
{"$mod":[expr1,expr2]} #第一个表达式除以第二个表达式得到的余数作为结果

注意:expr可以为字段也可以为具体数值,可以多个表达式一起使用。

效果:
在这里插入图片描述

3、日期表达查询

日期表达查询:$year,$month,$week,$dayOfMonth,$dayOfWeek,$dayOfYear,$hour,$minute,$second,可以多个组合,实际上就是对字段使用日期函数。

db.test.aggregate(
	{
    "$project":{
        "userid":1,
        "new_year":{
            "$year":"$create_date"
        },
        "day":{
            "$dayOfWeek":"$create_date"
        },
        "month":{
            "$month":"$create_date"
        }
    }
})

效果:
在这里插入图片描述
比如:求时间差:

db.test.aggregate(
	{"$project":{"name":1,"new_minute":{
        "$subtract":[
            {"$minute":new Date()},
            {"$minute":"$create_date"}
        ]
    }}}
)

效果:
在这里插入图片描述

4、字符串表达式查询

常用类型如下:
{"$substr":[自定义字符串|$字段名,起始位置,截取几个字节]}
{"$concat":[expr1,expr2,...,exprN]} #指定的表达式或字符串连接在一起返回,只支持字符串拼接
{"$toLower":expr}
{"$toUpper":expr}

截取字段:

db.test.aggregate( {"$project":{"str":{"$substr":["$price",0,1]}}})

在这里插入图片描述

截取自定义字符串:

db.test.aggregate( {"$project":{"str":{"$substr":["abcdef",1,2]}}})

在这里插入图片描述

拼接字段:

db.test.aggregate( {"$project":{"str":{"$concat":["$userid","1","2"]}}})

在这里插入图片描述

拼接字符串:

db.test.aggregate( {"$project":{"str":{"$concat":["abc","1","2"]}}})

在这里插入图片描述

举报

相关推荐

0 条评论