您的位置:首页 > 数据库 > Mongodb

MongoDB

2016-04-27 16:22 441 查看



转至元数据结尾

Created by 孙文亮, last modified
by Unknown User (keting) on 十二月
03, 2015

转至元数据起始



命令交互
简单查询

查询一条记录
查询一共有多少记录
distinct

复杂查询

聚合查询

管道
group by date()
排除字段为空的情况

数据更新
典型查询

诊疗圈加载时间查询

数据类型

data数据定义

常用链接
Python与MongoDB


命令交互

连接MongoDB:

mongo 192.168.168.225:10000/logs

目前Mongo下的数据库有:

logs,目前存放用户行为日志
form,病历夹表单数据
platform,商业平台的相关数据

MongoDB常用命令:
> db.auth('logs','password')   #填写账号密码,用密码取代“password”

> show dbs   #查看所有的db

> use logs   #连接到一个指定的数据库logs

> show collections   #查看所有的集合

> db.getCollection('logs').find({})   #查看logs集合下的所有数据

> db.getCollection('logs').find({"log.CUSTOM_DATA.userId": 500566})    #查看userid=500566的用户日志





简单查询

查询一条记录

db.data.findOne();

查询一共有多少记录

db.data.find().count();

查询按照时间倒序前10条

db.data.find({'date':{$gte:new Date(2015,9,1)}}).sort({'date':-1}).limit(10);

distinct

查询objectID


复杂查询


聚合查询

聚合查询类似于关系数据库中的group by,是将数据按照指定维度汇总。例如:

管道

group by date()

group data()+distinct

排除字段为空的情况

Mongo查询指定userid的访问日志:

查询指定群组ID,不含IOS系统,倒排序:


数据更新

db.collection.update( criteria, objNew, upsert, multi )

criteria : update的查询条件,类似sql update查询内where后面的

objNew : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的

upsert : 这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

multi : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。


典型查询

诊疗圈加载时间查询

count:从病历夹APP进入诊疗圈首页的次数
avg:每日平均加载时间,单位毫秒


数据类型


data数据定义

s:操作时间的秒值。

m:操作时间的分钟值。

h:操作时间的小时值。

logType:值为‘appStart’,则为启动app。值为‘search’,则结果每半秒都会产生一个结果。

timestamp:为当前操作时间。

referer:上一个链接页面。

env: release为上线的情况。


常用链接

Mongo官方文档
Win下安装Mongo
SQL与MongoDB对应关系
w3cschool的MongoDB学习文档,适合初学


Python与MongoDB

Python链接MongoDB,一般是用pymongo包,简要教程见此

需要注意的是:A Note On Unicode Strings中提到的问题,Python取出MongoDB的数据是字典格式,并且对字典的key和value都会编码为unicode,需要解码使用。

类似于:

MongoDB的主键类型是bson.objectid.ObjectId,可以通过 str(record["_id"]) 来转为字符串
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MongoDB 数据