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  就不說了。。







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章