MongoDB的连接、创库、删库、插入文档、更新文档

基本操作命令:http://blog.csdn.net/shirdrn/article/details/7105539

O、特殊操作符

$gt         大于(greater than)

$lt           小于(less than)

$gte        大于等于(greater than equal)

$lte          小于等于(less than equal)

$ne          不等于(no equal)

$eq          等于(equal)

$or           或

$type        基于BSON类型来检索集合中匹配的数据类型,并返回结果

pretty()     格式化输出

一、连接

1.启动MongoDB服务。在bin目录下执行mongod即可。

2.启动MongoDB  shell。在cmd中执行mongo即可。

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

  • mongodb:// 这是固定的格式,必须要指定。

  • username:password@ 可选项,如果设置,在连接数据库服务器之后,驱动都会尝试登陆这个数据库

  • host1 必须的指定至少一个host, host1 是这个URI唯一要填写的。它指定了要连接服务器的地址。如果要连接复制集,请指定多个主机地址。

  • portX 可选的指定端口,如果不填,默认为27017

  • /database 如果指定username:password@,连接并验证登陆指定数据库。若不指定,默认打开 test 数据库。

  • ?options 是连接选项。如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开

默认连接的是“test”数据库

切换数据库:use + 数据库名     

显示连接的数据库名:db

显示数据库名及容量:show dbs

添加数据库用户:

db.createUser({user:"xyj",pwd:"123456",roles:[{role:"root",db:"admin"}]})

验证用户身份:

db.auth('xyj','123456')      返回1则正确

二、创库

use + 数据库名

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

新创建的库在插入数据后,可以用show dbs查看到

三、删库

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

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

四、插入文档

所有存储在集合中的数据都是BSON格式,BSON是一种类json的一种二进制形式的存储格式。

db.COLLECTION_NAME.insert(document)

db.COLLECTION_NAME.insert([document,document])

五、更新文档

使用update()和save()方法来更新集合中的文档。

update()方法用于更新已存在的文档。  db.collection.update(<query>,<update>,{false,false}),第一个true/false表示找不到时是否新增,第二个true/false表示是否只更新第一条。

save()方法通过传入的文档来替换已有文档。id识别。

六、删除文档

remove()函数是用来移除集合中的数据。在remove()前先执行find()来判断执行的条件是否正确,是比较好的习惯。

db.collections.remove(<query>,{true,}).            条件;是否只删除一个文档

remove()方法已经过时了,现在官方推荐使用deleteOne()和deleteMany()方法。

db.collections.deleteOne({status:"D"})

db.collections.deleteMany({})

七、查询文档

mongodb使用find()方法来进行文档的查询。

db.collections.find({query },projection)             query查询条件,多条件可以通过逗号隔开

projection指定返回的键

如 

db.collection.find(query, {title: 1, by: 1}) // inclusion模式 指定返回的键,不返回其他键
db.collection.find(query, {title: 0, by: 0}) // exclusion模式 指定不返回的键,返回其他键

find().limit(int)指定从mongodb中读取的记录条数

find().skip(int)跳过指定数量的数据

find().sort({key:1})按照key对数据进行排序,1为升序,-1为降序

三者的执行顺序为:  sort()  skip()  limit()

八、索引

索引是特殊的数据结构,存储于一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构。

mongodb使用ensureIndex()方法来创建索引

db.collections.ensureIndex({key:1})    key为要创建的索引字段,1为按升序创建索引,-1为降序

mongodb使用dropIndexes()方法来删除索引

mongodb使用getIndexes()方法来查看索引

九、聚合   http://blog.csdn.net/vbirdbest/article/details/77102999                                                                   https://www.cnblogs.com/liruihuan/p/6686570.html

聚合(aggregate)主要用于处理数据(平均值,求和),并返回计算后的数据结果。

mongodb中聚合的方法使用aggregate()

$match 筛选条件,过滤掉不满足条件的文档,可以使用常规的查询操作符,如gt,lt,$in等

db.collections.aggregate({$match:{"age":{$gt:20}}}).pretty()

$projct投射,用于包含、排除字段:   0不显示,1显示

db.collections.aggregate({$project:{_id:0,name:1,birth:"$age"}}).pretty()

$group分组,将集合中的文档进行分组,可用于统计结果

db.collections.aggregate({$group:{_id:"$name",total:{$sum:1}}}).pretty()

聚合的相关函数可以同时使用,用逗号隔开即可。

十、备份(mongodump)与恢复(mongorestore)

cmd   cd到bin目录下。   C:Program FilesMongoDBServer3.4in

端口号?  

备份:       mongodump -d runoob -o c:datadump

还原:       mongorestore  -h 127.0.0.1:27017  -d runoob --drop  C:datadump unoob

十一、容量

???

十二、JSON

JSON: JavaScript Object Notation(JavaScript对象表示法)

JSON是存储和交换文本信息的语法。类似XML

JSON是轻量级的文本数据交换格式

JSON比XML更小、更快,更易解析

JSON独立于语言和平台。

JSON纯文本,具有层级结构

十三、BSON

BSON简称二进制的JSON,是JSON的二进制序列化编码格式,像JSON一样,BSON支持文档数组,支持二进制压缩格式。

特性:

1 轻量级  保持空间的开销最低,重要的是,任何数据表示格式,尤其是当在网络上使用

2 可遍历  BSON是被设计成更加容易的遍历访问。

3 高效      从BSON编码和解码数据,可以非常迅速地在大多数语言中。

目前只要用于MongoDB中,是MongoDB的数据存储格式。基于JSON

十四、上传下载pdf文件(MongoDB与GridFS)

MongoDB可以直接作为一个存储小文件(16M)的分布式文件系统,主要依赖于以下三点:

1、MongoDB可以直接存储二进制数据

2、MongoDB可以部署成分片集群,实现海量数据存储、读写分离

集群中的片可以部署成复制集,保证数据的可靠性

 对文件的存储方式有两种:一种是像存储普通数据那样,将文件转化为二进制数据存入mongodb,另一种使用gridfs。

博文:https://www.cnblogs.com/bonelee/p/6513657.html     http://www.cnblogs.com/lipan/archive/2011/03/21/1989409.html

具体第一种方法有待研究。

GridFS的使用场景

document的大小超过16M是使用GridFS的条件之一,另外:

①如果你的文件系统对每个目录下文件的个数有限制(或者太多,将会影响文件的打开速度)

②如果你的文件数据,有分数据中心镜像保存(大数据情况,可用性保证)

③如果你希望访问一个超大的文件,而不希望将它全部加入内存,而是有“range access”的情况,即分段读取,那么GridFS天生就具备这种能力,你可以随意访问任意片段。

对于一个大文件,如果你希望原子性的更新它的全部内容,那么GridFS将不适合;比如同时更新一个文件的多个chunk,因为mongodb本身没有事务机制。

使用mongofiles.exe进程,可实现对文件的上传。

命令行cd到bin目录下,输入

上传文件mongofiles.exe -h 192.168.130.129 --port  27017 -d PDFS --local D:AAA.pdf  put mongodb_introduction.pdf      

下载文件mongofiles.exe -h 192.168.130.129 --port  27017 -d PDFS --local D:BBB.pdf  get mongodb_introduction.pdf

查询文件mongofiles.exe -h 192.168.130.129 --port  27017 -d PDFS search algorithm_introduction.pdf 

删除文件mongofiles.exe -h 192.168.130.129 --port  27017 -d PDFS delete algorithm_introduction.pdf

GridFS的分布式文件系统,GridFS是基于MongoDB的数据库、集合、文档对象。当上传一个大文件到GridFS系统时,MongoDB自动将文件分割成256K的小块。然后将小块插入到数据库默认的集合fs.chunks中,同时将整个大文件的元数据信息插入到数据库的集合fs.files中。

总结:对于在MongoDB中存储大于16M的文件,我们应该用GridFS系统,它的性能要比操作系统的文件系统高效;对于小于16M的文件直接利用MongoDB的文档对象进行存储来的更高效,可以用二进制数据类型存储图片、视频等文件。

十五、本地windows远程连接虚拟机的mongodb主机

环境:本地windows7 64位,开了虚拟机vm。

目的:虚拟机启动mongodb,作为服务器,本地windows进行连接

连接前的测试:分别在本地和虚拟机的cmd中输入ipconfig,得到“无线局域网适配器 无线网络连接”下的IPV4地址。我的本地为192.168.1.102,虚拟机为192.168.130.129。互相ping ip地址,ping就可以进行下一步连接。

连接:首先虚拟机上启动mmongodb,注意bind_ip=192.168.130.129,默认为127.0.0.1只能进行本地连接。

           “mongod --config "c:....mongod.cfg"  ”   其中文件mongod.cfg中为:

        logpath= c:datalogmongod.log

        dbpath= c:datadb
        storageEngine= mmapv1
        bind_ip= 192.168.130.129

   然后在本地windows中cmd中输入  mongo 192.168.130.129:27017    。 连接成功后,就可以随意查询了。

           想本地下载服务器上的GridFS文件,需要cd到bin目录,然后输入:

                          mongofiles.exe -h 192.168.130.129 --port  27017 -d PDFS --local D:BBB.pdf  get mongodb_introduction.pdf即可

原文地址:https://www.cnblogs.com/hanmolabi/p/8018828.html