redash 上写 mongodb 查询语句 语法

redash 上写 mongodb 查询语句 语法1、常用语法关键字1.1、aggregate聚合函数语法看下面,基本都在聚合函数里写1.2、group 分组根据下单日期分组,注意分组后字段会只剩下分组字段和统计字段{ “collection”:”order”, “aggregate”:[ { “$group”:{“_id”:{“order_date”:”$order_date”},

大家好,欢迎来到IT知识分享网。

1、常用语法关键字

1.1、aggregate 聚合函数

语法看下面,基本都在聚合函数里写

1.2、group 分组

根据下单日期分组,注意分组后字段会只剩下分组字段和统计字段

{ 
   
	"collection": "order",       
	"aggregate": [
		    { 
   
		    "$group": { 
   
                "_id":{ 
   
                    "order_date":"$order_date"
                },
                "count":{ 
   "$sum":1}
            }		}  ]
}

1.3、match 筛选

筛选出 7天内下单的记录

{ 
   
"collection": "order",       
"aggregate": [
    { 
   
        "$match": { 
   
            "order_date": { 
   
                "$gt": { 
   
                    "$humanTime": "7 days ago"    
                }}
      } }  ]
}

1.4、lookup 连接表

通过 user_name 连接 user 表;
from 后接表名;
localField 后接 本表连接字段 (表 order 的字段)
foreignField 后接 外表连接字段 (表 user 的字段)
as 重命名(连接后会将数据当做一个字段,所以命名一下)

{ 
   
"collection": "order",       
"aggregate": [
    { 
   
        "$lookup":{ 
   
                "from":"user",
                "localField":"order_by_user_name",
                "foreignField":"user_name",
                "as":"bc"
            } }  ]
}

1.5、unwind 展开、管道

一般使用 lookup连接表后 需要继续操作,因此使用管道对结果集继续操作;
unwind 后接的 即 上面 as 命名的 字段对象

{ 
   
            "$unwind":"$bc"
        },

1.6、addFields 加字段、重命名

由于连接表后字段数据都整合都 bc 中了,可以通过这样将其取出

{ 
   
            "$addFields": { 
   
                "user_name": "$bc.user_name"
            }
        },

1.7、project 最终显示字段

最后你想要显示出来的,1显示 ,0不显示

{ 
   
            "$project":{ 
   
                "_id":0,
                "order_no":1,
                "order_date":1,
                "user_name":1
            }
        }

1.8、gt 大于、lt 小于

条件判断,常做筛选

{ 
   
            "$match":{ 
   
                "order_date":{ 
   
                "$gte": { 
   "$humanTime" :"{ 
   {day_start}}"},
                "$lte": { 
   "$humanTime" :"{ 
   {day_end}}"}}
            }
        }

1.9、humanTime 人类可读时间

大于7天前的日期,那就是7天内的

{ 
   
"collection": "order",       
"aggregate": [
    { 
   
        "$match": { 
   
            "order_date": { 
   
                "$gt": { 
   
                    "$humanTime": "7 days ago"    
                }}
      } }  ]
}

1.10、limit 分页

查找前 10 个; 另外 skip 可以填过多少个在查

{ 
   
    "collection": "userChargeEvent",       
    "aggregate": [
        
       { 
   
           "$limit":10
       }
    ]
}

1.11、sort 排序

name 后接进行排序的字段,
direction 后参数为 1升序 ; -1 降序

{ 
   
		"$sort": [{ 
   
			"name": "order_date",
			"direction": -1
		}]
	}

注意 json 格式,这上面语法有点头疼……有问题可以留言交流。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/23554.html

(0)
上一篇 2023-09-08 15:00
下一篇 2023-09-10 12:00

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信