也有一段時間沒有更新了。。。現在想想還是有點疲憊了。。。
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 就不說了。。