mongodb基础学习

时间:2021-04-24 11:58:27   收藏:0   阅读:0

Mongdb

mongdb入门

mongdb安装

linux下安装mangdb

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.10.tgz
tar zxvf mongodb-linux-x86_64-rhel62-3.2.10.tgz
bin 
	mongo.exe
	mongo.pdb
	mongod.exe
	mongod.pdb
	mongodump.exe
	mongoexport.exe
	mongofiles.exe
	mongoimport.exe
	mongooplog.exe
	mongoperf.exe
	mongoperf.pdb
	mongorestore.exe
	mongos.exe
	mongos.pdb
	mongostat.exe
	mongotop.exe
GNU-AGPL-3.0
README
THIRD-PARTY-NOTICES

bin文件夹下是mongodb的各种工具组件,具体功能请查看mongodb手册

mongdb安装

./mongod --path=/data/db

技术图片

技术图片

mongodb常用启动参数

mongod.exe常用参数如下

参数 描述
--bind_ip 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP
--logpath 定MongoDB日志文件,注意是指定文件不是目录
--logappend 使用追加的方式写日志
--dbpath 指定数据库路径
--port 指定服务端口号,默认端口27017
--serviceName 指定服务名称
--serviceDisplayName 指定服务名称,有多个mongodb服务时执行。
--install 指定作为一个Windows服务安装。

mongod.exe的启动参数,在window环境下和linux环境下并不相同,详见mongod - mongodb启动服务工具

mongodb后台启动

#数据库路径
dbpath=/data/db/
#日志输出文件路径
logpath=/data/log/mongod.log
#错误日志采用追加模式
logappend=true
#启用日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=true
#端口号 默认为27017
port=27017
#!/bin/sh  
# chkconfig: 2345 10 90 
# description: myservice ....
#  
#  ### BEGIN INIT INFO 
# Short-Description: mongodb    
# Description: mongo db server    
### END INIT INFO    

#注意这里的路径设置为你的mongod的位置
PROGRAM=/usr/local/mongodb-3.2.10/bin/mongod
MONGOPID=`ps -ef | grep ‘mongod‘ | grep -v grep | awk ‘{print $2}‘`

test -x $PROGRAM || exit 0

case "$1" in
  start)
     ulimit -n 3000
     echo "Starting MongoDB server"
#注意这里的路径设置为你的mongodb的配置文件的位置
     $PROGRAM --fork --quiet -f /data/conf/mongod.conf
     echo "Started MongoDB server"
     ;;
  stop)
     echo "Stopping MongoDB server"
     if [ ! -z "$MONGOPID" ]; then
        kill -15 $MONGOPID
     fi
     echo "Stopped MongoDB server"
     ;;
  status)
     ;;
  *)
     echo "Usage: mongodb {start|stop|status}"
     exit 1
esac
exit 0
# chmod +x /etc/init.d/mongodb
# chkconfig --add mongodb
# chkconfig mongodb on

启动shell

技术图片

mongodb数据增删

在mongodb中是通过数据库、集合、文档的方式来管理数据,下边是mongodb与关系数据库的一些概念对比:

技术图片

创建数据库

use DATABASE_NAME

如果数据库不存在,则创建数据库,否则切换到指定数据库。

技术图片

show dbs

技术图片

可以看到我们刚刚创建的数据库并不在列表中 如果想要添加进去必须插入一些数据

db.mongodb_test.insert({‘name‘:‘zgrey‘})

技术图片

技术图片

MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。

删除数据库

db.dropDatabase()

删除当前数据库,默认为 test,你可以使用 db 命令查看当前数据库名。

技术图片

技术图片

技术图片

技术图片

集合增删

db.createCollection(name, options)
name: 新创建的集合名称
options: 创建参数
db.collection.drop()
例子:
db.student.drop() 删除student集合

Mongodb插入文档

  1. 文档的数据结构和JSON基本一样。

  2. 所有存储在集合中的数据都是BSON格式。

  3. BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。

db.COLLECTION_NAME.insert(document)  
db.col.insert({title:‘Mongodb_test‘,description:‘Mongodb是一个Nosql数据库‘,by:‘zgrey‘,url:‘www.zgrey.com‘,tags:[‘mongodb‘,‘test‘,‘zgrey‘],likes:100})

以上实例中 col 是我们的集合名,前一章节我们已经创建过了,如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档。

技术图片

document=({title:‘Mongodb_test‘,description:‘Mongodb是一个Nosql数据库‘,by:‘zgrey‘,url:‘www.zgrey.com‘,tags:[‘mongodb‘,‘test‘,‘zgrey‘],likes:100})

技术图片

技术图片

插入文档你也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。

Mongodb删除文档

MongoDB remove()函数是用来移除集合中的数据。

MongoDB数据更新可以使用update()函数。在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯。

db.collection.remove( 
	<query>,     
	<justOne> 
)  

如果你的 MongoDB 是 2.6 版本以后的,语法格式如下:

db.collection.remove(     
	<query>,     
	{       
		justOne: <boolean>,
		writeConcern: <document> 
	} 
)

参数说明:

使用find()函数查询数据

技术图片

db.col.remove({‘title‘:‘Mongodb_test‘})

技术图片

移除两条数据

技术图片

如果你只想删除第一条找到的记录可以设置 justOne 为 1,如下所示:

技术图片

技术图片

技术图片

>db.col.remove({})  
>db.col.find()  

更新文档

MongoDB 使用 update()save() 方法来更新集合中的文档。接下来让我们详细来看下两个函数的应用及其区别。

db.collection.update(    
	<query>, 
	<update>, 
	{       
		upsert: <boolean>,   
		multi: <boolean>,  
		writeConcern: <document>
	}
)

参数说明:

我们在集合 col 中插入如下数据:

技术图片

db.col.update({‘title‘:‘Mongodb_test‘},{$set:{‘title‘:‘Mongodb‘}})

技术图片

技术图片

以上语句只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true。

>db.col.update({‘title‘:‘MongoDB‘},{$set:{‘title‘:‘MongoDB‘}},{multi:true})

save() 方法通过传入的文档来替换已有文档。语法格式如下:

db.collection.save(    
	<document>,     
	{      
		writeConcern: <document> 
	}  
)  

参数说明:

测试: 这里我们替换id为 ObjectId("60822d2002162bf438740c6e")的文档

db.col.save({"_id" : ObjectId("60822d2002162bf438740c6e"),‘title‘:‘Mongodb‘,‘description‘:‘Mongodb Nosql‘,‘by‘:‘zgrey‘,‘url‘:‘www.zgrey‘,"tags" : [ "mongodb", "test", "zgrey" ], "likes" :123})

技术图片

只更新第一条记录:

db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );

全部更新:

db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );

只添加第一条:

db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );

全部添加加进去:

db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );

全部更新:

db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );

只更新第一条记录:

db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

用户操作

创建用户

创建一个数据库新用户用db.createUser()方法,如果用户存在则返回一个用户重复错误。

db.createUser(user, writeConcern)

User文档

user文档,定义了用户的以下形式:

{ user: "<name>",
  pwd: "<cleartext password>",
  customData: { <any information> },
  roles: [
    { role: "<role>", db: "<database>" } | "<role>",
    ...
  ]
}

user文档字段介绍:

在roles字段,可以指定内置角色和用户定义的角色。

MongoDB内置角色有如下:

  1. 数据库用户角色:read、readWrite;

  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;

  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

  4. 备份恢复角色:backup、restore;

  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

  6. 超级用户角色:root

    // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)

  7. 内部角色:__system

你可以点击这里查看每个角色所拥有的操作权限。

writeConcern文档

示例

例如:在products数据库创建用户accountAdmin01,并给该用户admin数据库上clusterAdmin和readAnyDatabase的角色,products数据库上readWrite角色。

use products
db.createUser( { "user" : "zgrey",
                 "pwd": "123",
                 "customData" : { employeeId: 12345 },
                 "roles" : [ { role: "clusterAdmin", db: "admin" },
                             { role: "readAnyDatabase", db: "admin" },
                             "readWrite"
                             ] },
               { w: "majority" , wtimeout: 5000 } )
技术图片

技术图片

查询用户

show users

技术图片

删除用户

技术图片

修改用户

技术图片

use products
db.createUser( { "user" : "zgrey",
                 "pwd": "123",
                 "customData" : { employeeId: 12345 },
                 "roles" : [ { role: "clusterAdmin", db: "admin" },
                             { role: "readAnyDatabase", db: "admin" },
                             "readWrite"
                             ] },
               { w: "majority" , wtimeout: 5000 } )

技术图片

修改密码

技术图片

java代码连接mongodb

		<dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>3.2.1</version>
        </dependency>
	@Test
    public void connect(){
        MongoClient mongoClient = new MongoClient("192.168.207.139",27017);
        //也可以使用字符串进行连接
//        MongoClientURI clientURI = new MongoClientURI("mongodb://192.168.207.139:27017");
//        MongoClient mongoClient = new MongoClient(clientURI);
        MongoDatabase products = mongoClient.getDatabase("mongodb");
        MongoCollection<Document> col = products.getCollection("col");
        Document first = col.find().first();
        String s = first.toJson();
        System.out.println(s);
    }
评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!