mongodb

一.安装,配置

1.下载,并解压

  可视化工具下载:https://robomongo.org/download

  wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.4.5.tgz

2.创建db和logs两个文件夹

3.创建配置文件mongodb.conf  

  dbpath=/opt/modules/mongodb3.4.5/db
  logpath=/opt/modules/mongodb3.4.5/logs/mongodb.log
  port=27017
  fork=true
  nohttpinterface=true

4.启动

  bin/mongod -f mongodb.conf

5.进入mongodb客户端创建超级用户

  bin/mongo

  >use admin

  >db.createUser({user:"root",pwd:"123456",roles:["root"]}) //添加管理员

6.在mongodb.conf里添加安全验证

  auth=true

7.关闭Mongodb

   pkill mongod 或进入mongo shell :运行 db.shuidownServer()

8.启动Mongodb

  bin/mongo admin -u root -p root

9.普通用户的创建

  db.createUser( { user: "test", pwd: "test",

          customData: { employeeId: 12345 },

           roles: [ "readWrite"] },

          { w: "majority" , wtimeout: 5000 } )

每个用户可以有多个角色

二.基本命令

show dbs查看所有的数据库
show tables查看所有的集合
db显示当前的数据库
use+name切换到指定的数据库,如果不存在则创建新的
文档是一组键值(key-value)对(即BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型
{"name": 2, "age": 169}
{"name": "Óin", "age": 167}
{"bianhao": 33, "age": 82}
创建固定大小的集合db.createCollection("mycoll", {capped:true, size:100000})
db.runoob.insert({"name":"菜鸟教程"})向数据库中插入数据
db.dropDatabase()删除当前数据库
db.collectionname.drop()删除集合

MongoDB查询某天的数据

db.CollectionAAA.find({ "CreateTime" : { "$gte" : ISODate("2017-04-20T00:00:00Z")  

, "$lt" : ISODate("2017-04-21T00:00:00Z") } }).count() 

spark操作MongoDB遇到的问题

*Error: Attempt to use a decimal BSON type when experimental decimal server support is not currently enabled.

解决方案:对decimal类型的数据进行了转换

索引

1、给表字段添加索引(1升序,-1降序)
  db.table.ensureIndex({nFlag:1})
  db.user.ensureIndex({"Id":1,"name":-1})
2、查找表的索引  
  db.system.indexes.find()

3、删除索引
  db.mycoll.dropIndex(name)
4、数据去重
  db.user.distinct('name')

mongoDB字段的改变

1 、添加一个字段.  table 代表表名 , 添加字段 content,字符串类型。如果是0则默认为double类型

  db.table.update({}, {$set: {content:""}}, {multi: true})

2、删除一个字段

  db.table.update({},{$unset:{content:""}},false, true)

3、批量更新state(double)的数据类型为Int32

  type:1表示 double 类型 ,new NumberInt(x.state)表示修改state为int32位

db.jd.find({"state":{$type:1}}).forEach( 
    function(x){ 
        x.state=new NumberInt(x.state); 
        db.jd_goods_code.save(x); 
    } 
)
具体的数据类型对应:
类型     数字     备注
Double     1   双精度浮点数 - 此类型用于存储浮点值
String     2   字符串 - 这是用于存储数据的最常用的数据类型。MongoDB中的字符串必须为UTF-8
Object     3   对象 - 此数据类型用于嵌入式文档
Array      4   数组 - 此类型用于将数组或列表或多个值存储到一个键中
Binary data   5   二进制数据 - 此数据类型用于存储二进制数据
Object id    7   对象ID - 此数据类型用于存储文档的ID
Boolean     8   布尔类型 - 此类型用于存储布尔值(true / false)值
Date      9   日期 - 此数据类型用于以UNIX时间格式存储当前日期或时间。
Null      10   Null - 此类型用于存储Null值
Regular    11   正则表达式 - 此数据类型用于存储正则表达式
32-bitinteger 16   32位整型 - 此类型用于存储数值
Timestamp   17   时间戳 - 当文档被修改或添加时,可以方便地进行录制
64-bit integer 18   64位整型 - 此类型用于存储数值

mongodb数据按时间段导出:
bin/mongoexport -d log -c WebLogger_58cm.com -u gyz -p gyz  -o gyzdata/da.json -q '{"StartTime":{"$gt":ISODate("2018-08-16T16:00:00Z"),"$lt":ISODate("2018-08-17T16:00:00Z")}}'
mongo与sql语句的对比

 

 
posted @ 2017-08-17 18:24  飞末  阅读(667)  评论(0)    收藏  举报