学习笔记_MongoDB使用

http://www.runoob.com/MongoDB/mongodb-tutorial.html

 

启动MongoDB,打开D:\Install_Mongodb\bin\mongod.exe

或者

用命令行进入D:\Install_Mongodb\bin输入mongod.exe --dbpath d:\data\db

安装后,可以用MongoBooster、MongoChief等工具管理查询。

也可以用命令行,打开安装目录的bin文件夹下,如D:\Install_Mongodb\bin

,然后输入mongo,就可以进入其shell命令行。

改成全局使用mongo命令的话,需要到环境变量配置的path中加入mongdb安装地址的bin,即可全局使用命令。

 

命令行是区分大小写的。

 

使用用户名和密码连接到MongoDB服务器,你必须使用 'username:password@hostname/dbname' 格式,'username'为用户名,'password'为密码。

如mongodb://admin:123456@localhost/test

 

 

use DATABASE_NAME     //创建数据库

db                                          //显示当前数据库

show dbs                            //显示所有数据库

show collections    //显示数据库中的集合,相当于表格

db.runCommand({"dropDatabase":1})    删除当前数据库

 

mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径 //导出数据库所有数据,如:mongodump-h 127.0.0.1 -o /home/zhangy/mongodb/ connected to: 127.0.0.1

//导出指定数据库

mongodump -h 192.168.1.108 -d 数据库名-o/home/zhangy/mongodb/ connected to: 192.168.1.108

//还原数据库,即导入

mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径

 

db.runoob.insert({"name":"菜鸟教程"})

db.dropDatabase()          //删除当前数据库

db.collection.drop()         //删除集合

db.collection.remove({key1:value1,key2:value2}) //删除

db.collection.remove({})           //删除所有

db.collection.find({key1:value1,key2:value2})         //查询

db.collection.find()                     //查询所有

db.col.find().pretty()                  //格式化查询结果

// OR语句查询

db.col.find(

   {

     $or: [

              {key1: value1}, {key2:value2}

     ]

   }

).pretty()

// AND和OR联合使用

db.col.find({"likes": {$gt:50},$or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()

(>) 大于 - $gt

(<) 小于 - $lt

(>=) 大于等于 - $gte

(<= ) 小于等于 - $lte

db.col.find({likes : {$lt :200, $gt :100}})

db.col.find().limit(NUMBER)    //limit限制读取条数

db.col.find().limit(NUMBER).skip(NUMBER)   //skip跳过条数

db.col.find().sort({KEY:1})         //排序,1为升序,-1为降序

db.col.ensureIndex({KEY:1})    //创建索引,1为升序,-1为降序

db.values.ensureIndex({open: 1, close: 1},{background: true})      //后台创建索引

ensureIndex接受参数:background,unique,name,dropDups,sparse,expireAfterSeconds,v,weights,default_language,language_override

db.col.aggregate(AGGREGATE_OPERATION) //用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。

聚合:$sum,$avg,$min,$max,$push,$addToSe,$first,$last,$project,$match,$limit,$skip,$unwind,$group,$sort,$geoNear

mongod --port "PORT" --dbpath"YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"               //关闭正在运行的MongoDB服务器。实例如mongod--port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0

以上实例会启动一个名为rs0的MongoDB实例,其端口号为27017。复制创建副本,防止宕机后不可用。

rs.initiate()       //启动一个新的副本集。

rs.conf()            //查看副本集的配置

rs.status()       //查看副本集状态

rs.add(HOST_NAME:PORT)              //添加副本集的成员。如rs.add("mongod1.NET:27017")

db.isMaster()  //判断当前运行的Mongo服务是否为主节点

 

MongoDB分片(集群)

 

mongodump -h dbhost -d dbname -odbdirectory            //备份

-h:

MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017

-d:

需要备份的数据库实例,例如:test

-o:

备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

 

mongorestore -h dbhost -d dbname--directoryperdb dbdirectory //恢复备份和数据

-h:

MongoDB所在服务器地址

-d:

需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2

--directoryperdb:

备份数据所在位置,例如:c:\data\dump\test,这里为什么要多加一个test,而不是备份时候的dump,读者自己查看提示吧!

--drop:

恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!

接下来我们执行以下命令:

mongorestore

 

mongostat       //mongodb自带的状态检测工具

 

官方的MongoDB的文档中说明,覆盖查询是以下的查询:

所有的查询字段是索引的一部分

所有的查询返回字段在同一个索引中

由于所有出现在查询中的字段是索引的一部分, MongoDB 无需在整个数据文档中检索匹配查询条件和返回使用相同索引的查询结果。

因为索引存在于RAM中,从索引中获取数据比通过扫描文档读取数据要快得多。

 

MongoDB 查询分析可以确保我们建议的索引是否有效,是查询语句性能分析的重要工具。

MongoDB 查询分析常用函数有:explain() 和 hint()。

 

mongodb不支持事务,所以,在你的项目中应用时,要注意这点。无论什么设计,都不要要求mongodb保证数据的完整性。

但是mongodb提供了许多原子操作,比如文档的保存,修改,删除等,都是原子操作。

 

MongoDB 固定集合(CappedCollections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素!

 

MongoDB 没有像 SQL 一样有自动增长的功能,MongoDB 的 _id 是系统自动生成的12字节唯一标识。

但在某些情况下,我们可能需要实现 ObjectId 自动增长功能。

由于 MongoDB 没有实现这个功能,我们可以通过编程的方式来实现,以下我们将在 counters 集合中实现_id字段自动增长。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章