mysql mongodb PostgreSQL运用技能

也有一段时间没有更新了。。。现在想想还是有点疲惫了。。。

http://www.cnblogs.com/Joans/p/3729914.html
http://www.cnblogs.com/lori/p/4597341.html

db.runCommand({
    mapreduce: "M_User_Footprints",
    map: function Map() {
       emit(
        { "UserInfoID": this.UserInfoID, "ObjID": this.PlayVideo.ObjID }
        ,
         { count: 1 }
        );
    },
    reduce: function Reduce(key, values) {
        total = 0;//定义一个变量total , values是一个数组
        for (var i in values) {
            total += values[i].count
        }


        return { "count": total };
    },
    finalize: function Finalize(key, reduced) {
        return reduced;
    },
    out: { inline: 1 }
});




mongodb --》 文档型数据库,json串,没什么好特别的


把mongodb 查询结果保存在bin目录下的csv 文件
./mongoexport  --host "IP:port" -u "user_name" -p "pass_word" -d database -c collection--csv -o shopflow.csv  -f user_id -q '{ "linkMillis" : { "$gte" : 1452873601000 , "$lt" : 1453478399000} ,user_id:{"$in":["453786"]}}'
./mongoexport  --host "xxxx:yyyy" -u "xxxx" -p "xxxx" -d database -c collection --type=csv -o shopflow02.csv  -f ssid,user_id,shop_id,createdTime --limit 50000 --skip 50000


db: 查看当前db
show dbs 查看dbs
show collections  查看 collections
db.collection.states  实现索引的代码
数据库查询一定要沿着索引项查询。否则。。。。一般建立索引都在非聚集上。
所以查询比较耗时间。
db.collection.states() 查看索引


查询:
db.shopflow.find({"aa":"bbb"})


只显示item,qty,不显示_id
db.shopflow.find({'openid':{'$in':['4100043800191','4100043787566','4100043820943','4100044071433']},'link_date':{'$lt':'2015-12-01'}},{ item: 1, qty: 1, _id:0 })


db.runCommand({"distinct":"shopflow","key":"apKey","query":{'linkMillis':{'$gte':1453564800000,'$lt':1453651200000}}}).values.length


聚合函数
db.bridgewifisession.aggregate([ { "$match" : { "createdTime" : {"$gte": "2016-01-13 00:00:01", "$lt" : "2016-01-13 23:59:59"}}} , { "$group" : { "_id" :  null  , "total" : { "$sum" : "$sessionTime"}}}]) 




mysql:
关系型数据库,简单,写复杂的sql 麻烦
内连接,自然连接 没有本质区别,我们常用的应该是内连接。自然连接会


为了不遗漏为null 的字段 请分清楚标准后 使用 左连接 来标志。 把不想暴露的列给漏出来。


字段的where 子句 可以使用 正则表达式 格式为:where 字段 referee REGEXP '^0[1-9][0-9]{4}$'

在mysql 里 01234和 1234 是相等的。。。所以, 你懂的。。。会出问题。。。



mysql update可以允许 连接表 然后更新
UPDATE wifi_op_shopwx_user_info tt1 INNER JOIN (
SELECT user_id,money1+money2 total FROM (
SELECT user_id,t1.money money1,t2.money money2,state FROM wifi_op_shopwx_deposit_record t1,wifi_op_shopwx_user_info t2 
WHERE t1.user_id=t2.ID AND DATE(delivery_time)='2016-01-19' AND state=4
) t
)tt2 ON tt1.ID=tt2.user_id
SET tt1.money=tt2.total;




PostgreSQL:自称可以替换Oracle数据库,比较强大的综合中间库,用于中间库和其他系统的对接。
不清楚是关系型还是非关系型。还是两种兼容的综合。


语法同mysql 差不多,但是对数据类型的要求特别严格。
主要是按照特定的数据类型格式要进行强制类型转换,进行查询和标的就可以。
数据库查询一定要沿着索引项查询。否则。。。。一般建立索引都在非聚集上。
所以查询比较耗时间。


GBD,hadoop  就不说了。。







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值