也有一段时间没有更新了。。。现在想想还是有点疲惫了。。。
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 就不说了。。