自己做网站模板,wordpress安装创建数据库文件,微信朋友圈的网站连接怎么做,wordpress 产品相册插件文章目录 一、MongoDB简介二、服务启动停止、连接三、数据库相关四、集合操作五、文档操作六、数据备份与恢复/导入导出数据6.1 mongodump备份数据库6.2 mongorestore还原数据库6.3 mongoexport导出表 或 表中部分字段6.4 mongoimport导入表 或 表中部分字段 七、其他常用命令八… 文章目录 一、MongoDB简介二、服务启动停止、连接三、数据库相关四、集合操作五、文档操作六、数据备份与恢复/导入导出数据6.1 mongodump备份数据库6.2 mongorestore还原数据库6.3 mongoexport导出表 或 表中部分字段6.4 mongoimport导入表 或 表中部分字段 七、其他常用命令八、补充 还记得MySQL、Redis、PostgreSQL、ClickHouse常用命令及操作吗如果忘记可以到这里重新温习
MySQL常用命令Redis常用命令PostgreSQL常用命令ClickHouse常用命令启动、关闭、连接、备份、导入导出。本文重点讲述MongoDB常用命令。 一、MongoDB简介
MongoDB是一款流行的NoSQL数据库以其灵活的文档模型、高可用性、易于扩展等特性而受到广泛关注。
MongoDB 是由C语言编写的是一个基于分布式文件存储的开源数据库系统在高负载的情况下添加更多的节点可以保证服务器性能MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案MongoDB 将数据存储为一个文档数据结构由键值(keyvalue)对组成MongoDB 文档类似于 JSON 对象。特点高性能、高可用、高扩展、丰富的查询支持、动态模式和灵活的文档模型应用场景网站实时数据处理缓存高伸缩性的场景
MongoDB中的记录是一个文档它是由字段和值对组成的数据结构。多个键及其关联的值有序地放在一起就构成了文档。MongoDB文档类似于JSON对象。字段的值可以包括其他文档数组和文档数组。{“greeting”:“hello,world”, “foo”: 3}
在MongoDB中基本的概念是文档、集合、数据库。
SQL术语/概念MongoDB术语/概念解释/说明databasedatabase数据库tablecollection数据库表/集合rowdocument(集合中的数据)数据记录行/文档columnfield数据字段/域indexindex索引table joins表连接MongoDB不支持primary keyprimary key主键MongoDB自动将_id字段设置为主键
数据库服务和对应的客户端
数据库服务客户端Mysqld/Oraclemysql/sqlplusmongodbmongo
在MongoDB中常用命令包括数据库操作、集合操作、文档操作等几个方面。以下是MongoDB的一些常用命令及其说明
二、服务启动停止、连接
#windows cmd 或 Linux 终端
mongo --version#启动
#Windows启动与停止 命令行指令、任务管理器手动启动停止
#以管理员方式运行cmd输入以下命令
net start mongodb
net stop mongodb #停止mongodb服务
netstat -aon | findstr 27017#Linux启动与停止
/xxx/mongodb-server/bin/mongod -f /xxx/mongodb-server/conf/mongodb.conf #启动
ps -ef | grep mongodb-server
netstat -tunlp | grep 27017
ps -aef | grep mongodb-server | grep -v grep | awk {print $2} | xargs -t kill -9 #停止#连接mongodb
#配置了环境变量的前提下 在任意目录可通过mongo进入数据库否则需要在mongodb安装目录下操作
mongo #无密码
mongo 10.169.215.xx:27017/admin -uroot -p1234 #有密码
mongo localhost:27017/admin -uroot -p密码
mongo admin -uroot -p密码已开启认证的除了mongo 10.169.215.xx:27017/admin -uroot -p1234连接还可以通过 mongo进入命令行使用use admin通过db.auth(‘root’,‘密码’) 输出1就是验证成功。 windows下启动、停止、查看mongodb linux下启动、停止、查看mongodb 三、数据库相关
连接数据库 使用MongoDB Shell连接mongo [host]:[port]/[dbname]其中[host]是数据库服务器地址[port]是端口号默认为27017[dbname]是数据库名。如果连接本地数据库可以简化为mongo或mongo localhost有密码则需要加上对应的参数 -u、-p使用完整连接字符串mongodb://[username:password]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]。 查询所有数据库 命令show dbs 或 show databases 创建/切换数据库 命令use database_name。如果数据库不存在则创建并切换到该数据库如果数据库已存在则直接切换到该数据库。 删除数据库 先切换到要删除的数据库然后执行命令db.dropDatabase()。 查看当前使用的数据库 命令db 或 db.getName() 显示数据库中的用户 show users
#mongodb命令行
show dbs #查询所有数据库
use database_name #创建/切换数据库
db.dropDatabase() #删除数据库
db 或 db.getName() #查看当前使用的数据库
show users #显示数据库中的用户四、集合操作
创建集合 命令db.createCollection(name, options)。其中name是集合名称options是可选参数用于指定集合的特性如固定集合capped collection的大小和最大文档数。集合的隐式创建当向一个集合中插入一个文档的时候如果集合不存在则会自动创建集合。 提示通常我们使用隐式创建文档即可 查看所有集合 命令show collections 或 show tables 删除集合 命令db.collection_name.drop()。成功删除集合将返回true否则返回false 查询当前集合的数据条数db.yourCollec.count()
#mongodb命令行
use wjTemp #如果wjTemp数据库不存在则创建并切换到该数据库如果数据库已存在则直接切换到该数据库
db.createCollection(myCollec) #创建myCollec集合
db.createCollection(myCollec2)
db.createCollection(“collName”, {size: 20, capped: 5, max: 100});
show tables #查看所有集合
db.myCollec2.drop() #删除myCollec2集合
show collectionsdb.getCollection(account) #得到指定名称的聚集集合table
db.getCollectionNames() #得到当前db的所有聚集集合
db.printCollectionStats() #显示当前db所有聚集索引的状态五、文档操作
插入文档使用 insert 或 save 方法插入文档在较新的 MongoDB 版本中save 方法已被弃用推荐使用 insertOne 或 insertMany 单条插入db.collection_name.insert(document) 或 db.collection.insertOne(document)多条插入db.collection_name.insert([document1, document2, ...]) 或 db.collection.insertMany([document1, document2, ...]) 查询文档 查询所有文档db.collection_name.find()。相当于 select * from collection_name查询满足条件的文档db.collection_name.find(query)其中query是查询条件。格式化显示查询结果db.collection_name.find().pretty()查询并返回第一个匹配的文档db.collection_name.findOne(query) 更新文档update、updateOne、updateMany 使用update方法db.collection.update(query, update, {upsert: boolean, multi: boolean})。其中query是查询条件类似sql update查询内where后面的update是更新内容也可以理解为sql update查询内set后面的upsert 可选表示如果不存在满足条件的文档是否插入新文档默认为falsemulti 可选表示是否更新所有满足条件的文档默认为false只更新第一个。使用$set操作符更新字段db.collection.update(query, {$set: {field: value}}) 删除文档remove、deleteOne、deleteMany 删除满足条件的文档db.collection.remove(query, {justOne: boolean})。其中query是删除条件justOne表示是否只删除第一个匹配的文档默认为false删除所有匹配的文档。使用deleteOne或deleteMany方法MongoDB 3.2db.collection.deleteOne(query) 或 db.collection.deleteMany(query)
#插入、查询、删除
db.myCollec.insert({title: MongoDB, description: MongoDB NOSQL,by: test,url: https:,tags: [mongodb, database, NoSQL],likes: 100
})
db.myCollec.find()
db.myCollec.update({title:MongoDB},{$set:{title:MongoDB-test}})
db.myCollec.remove({title:MongoDB-test})#查询
db.userInfo.find() #查询所有记录
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER) #分页列表查询。使用limit()方法来读取指定数量的数据使用skip()方法来跳过指定数量的数据
db.userInfo.distinct(name) #查询去掉后的当前聚集集合中的某列的重复数据。会过滤掉name中的相同数据相当于select distict name from userInfo
db.userInfo.find({age: 23}) #查询age 23的记录相当于 select * from userInfo where age 23
db.userInfo.find({age: {$gt: 23}}) #查询age 23的记录
db.userInfo.find({age: {$gte: 25}}) #查询age 25的记录
db.userInfo.find({name: /mongo/}) #查询name中包含 mongo的数据//相当于%%相当于 select * from userInfo where name like ‘%mongo%’
db.userInfo.find({name: /^mongo/}) #查询name中以mongo开头的select * from userInfo where name like ‘mongo%’
db.userInfo.find({}, {name: 1, age: 1}) #查询指定列name、age数据相当于select name, age from userInfo
db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1}) #查询指定列name、age数据, age 25。相当于select name, age from userInfo where age 25
#按照年龄排序
db.userInfo.find().sort({age: 1}) #升序
db.userInfo.find().sort({age: -1}) #降序
db.userInfo.find({name: zhangsan, age: 22}) #查询name zhangsan, age 22的数据。相当于select * from userInfo where name ‘zhangsan’ and age ‘22’;
db.userInfo.find().limit(5) #查询前5条数据。相当于selecttop 5 * from userInfo;
db.userInfo.find().skip(10) #查询10条以后的数据。相当于select * from userInfo where id not in (selecttop 10 * from userInfo)
db.userInfo.find().limit(10).skip(5) #查询在5-10之间的数据。可用于分页limit是pageSizeskip是第几页*pageSize
db.userInfo.find({sex: {$exists: true}}).count() #按照某列进行排序。相当于select count(sex) from userInfo六、数据备份与恢复/导入导出数据 定时备份/全量备份 备份 mongodump还原 mongorestore 备份格式 bson/gzip 分析数据/迁移数据 备份 mongoexport还原 mongoimport 备份格式json csv
常见备份恢复方法
1备份全库、单个库
mongodump --host mongodb1.example.net --port 27017 -u用户名 -p密码 --db mydbname --out /path/to/backup/
mongorestore --host mongodb2.example.net --port 27017 -u用户名 -p密码 --db mydbname /path/to/backup/mydbname/mongodump -h ip:端口 -uroot -p密码 -d 数据库 -o 路径 #备份数据库
mongodump -uroot -p密码 -d 数据库 -c 集合名 -o 路径 #备份数据库某个集合
mongorestore -h 127.0.0.1:27017 -u用户名 -p密码 -d 数据库 --dir /路径/数据库名/#加密后备份
mongodump -h ip:port -uroot -p密码 -d 数据库 --authenticationDatabase admin -o 路径
mongodump -uroot -p密码 -d 数据库 -c 集合名 --authenticationDatabase admin -o 路径 mongorestore -uroot -p密码 -d wjTemp2 --authenticationDatabase admin --dir /root/mon_wjTemp/wjTemp/2备份某个库的某张表
mongoexport备份
mongoexport备份某个表语法格式mongoexport --port 端口号 -d 库名 -c 表名 -o 备份文件路径.json
mongoexport备份某个表csv格式mongoexport --port 端口号 -d 库名 -c 表名 --typecsv -f 备份的字段 -o 备份文件路径.csv
mongoimport还原
mongoimport还原某个表json格式mongoimport --port 26017 -d 要还原的库名-c 表名 备份文件路径.json
mongoimport还原某个表csv格式 mongoimport --port 26017 -d 库名 -c 表名–typecsv --headerline 备份文件路径.csv
mongoimport还原csv格式表时要加上–headerline参数否则会将字段名也作为一条数据插入–headerline和-f不能同时使用
mongodump备份
mongodump备份库mongodump --port 26017 -d 库名 -o 备份文件路径
mongorestore还原
mongorestore还原mongorestore --port 26017 -d 库名 备份文件路径 --drop
6.1 mongodump备份数据库
常用命令格式如下
mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径
mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 集合名 -o 文件存在路径如果没有用户可以去掉-u和-p。如果导出本机的数据库可以去掉-h。如果是默认端口可以去掉–port。如果想导出所有数据库可以去掉-d
mongodump -h 127.0.0.1 -u用户名 -p密码 -o /home/dev/mongodb/ #备份所有数据库
mongodump -h ip --port 端口 -u用户名 -p密码 -d tank -o /home/dev/mongodb/ #备份指定数据库mongodump -uroot -p密码 -d wjTemp -o /root/mon_wjTemp
mongodump -uroot -p密码 -d wjTemp --authenticationDatabase admin -o /root/mon_wjTemp如果报错 Failed: error connecting to db server: server returned error on SASL authentication step: Authentication failed.可以添加--authenticationDatabase admin。
示例
mongodump -h 192.168.31.251:27017 -d my_db -u test_user -p test_user -o c:\mongoBackup
mongodump -h 192.168.31.251 -port:27017 -d my_db -u test_user -p test_user -o c:\mongoBackupmongodump -uroot -p密码 -d wjTemp --authenticationDatabase admin -o /root/mon_wjTemp6.2 mongorestore还原数据库
mongorestore --host hostname --port port --db database path_to_backup
mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径–drop的意思是先删除所有的记录然后恢复。
mongorestore -h ip:port -u 用户名 -p 密码 /home/dev/mongodb/ #恢复所有数据库到mongodb中。这里的路径是所有库的备份路径
mongorestore -d tank /home/dev/mongodb/tank/ #还原指定的数据库# 使用新建用户恢复demodb数据库
mongorestore -u 用户名 -p 密码 -d db_name c:\mongoBackup\my_db --authenticationDatabase admin -u admin -p password# 或使用admin用户恢复数据到 yuandb 数据库中
mongorestore -u admin -p admin123 -d yuandb c:\mongoBackup\my_db --authenticationDatabase admin -u admin -p admin123
#【注意备份的数据库文件路径(c:\mongoBackup\my_db)一定要指定到xxx.bson的根目录 】恢复前先要使用use 命令切换到要导入的数据库 在切换后的数据库下新建用户并设置角色及所属数据库 使用新建用户或admin用户导入 使用新建的用户连接数据库 【注意先用admin用户导入然后再创建普通用户并设置角色及指定所属数据库最终新建用户是无法连接数据库的】
通过以上步骤虽然能导入数据库但是在连接时会提示授权错误暂时就用admin一个用户就行
6.3 mongoexport导出表 或 表中部分字段
常用命令格式
mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 -f 字段 -q 条件导出 --csv -o 文件名上面的参数好理解重点说一下
-f 导出指定字段以字号分割-f name,email,age 导出name,email,age这三个字段-q 可以根查询条件导出-q ‘{ “uid” : “100” }’ 导出uid为100的数据–csv 表示导出的文件格式为csv的这个比较有用因为大部分的关系型数据库都是支持csv在这里有共同点
mongoexport -d tank -c users -o /home/dev/mongodb/tank/users.dat #导出整张表
mongoexport -d tank -c users --csv -f uid,name,sex -o tank/users.csv #导出表中部分字段
mongoexport -d tank -c users -q {uid:{$gt:1}} -o tank/users.json #根据条件敢出数据6.4 mongoimport导入表 或 表中部分字段
常用命令格式
1还原整表导出的非csv文件
mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsert --drop 文件名 重点说一下–upsert其他参数上面的命令已有提到–upsert 插入或者更新现有数据
2还原部分字段的导出文件
mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsertFields 字段 --drop 文件名–upsertFields根–upsert一样
3还原导出的csv文件
mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --type 类型 --headerline --upsert --drop 文件名上面三种情况还可以有其他排列组合的。
示例
mongoimport -d tank -c users --upsert tank/users.dat #还原导出的表数据
mongoimport -d tank -c users --upsertFields uid,name,sex tank/users.dat #部分字段的表数据导入
mongoimport -d tank -c users --type csv --headerline --file tank/users.csv #还原csv文件七、其他常用命令
查看帮助db.help() 或 db.yourCollec.help()或db.yourCollec.find().help()显示当前db状态db.stats() 当前db版本db.version() 查看当前db的链接机器地址db.getMongo()查看集合状态db.collection.stats()修复数据库db.repairDatabase()复制/克隆数据库db.cloneDatabase(hostname) 或 db.copyDatabase(fromdb, todb, hostname)。查询之前的错误信息db.getPrevError() 清除错误记录 db.resetError()用户操作
#添加一个用户
db.addUser(name);
db.addUser(userName, pwd123, true); 添加用户、设置密码、是否只读#数据库认证、安全模式
db.auth(userName, 123123)
show users #显示当前所有用户
db.removeUser(userName) #删除用户#添加用户、安全认证
#首先必须使用admin数据库进行新用户授权授权成功后关闭mongo服务
use admin
db.createUser({user:root,pwd:123456,roles:[{role:root,db:admin}]})
db.shutdownServer()
#验证使用use admin通过db.auth(‘root’,‘密码’) 输出1就是验证成功
use admin
db.auth(root,123456)db.cloneDatabase(“127.0.0.1”); 将指定机器上的数据库的数据克隆到当前数据库
db.copyDatabase(mydb, temp, 127.0.0.1);将本机的mydb的数据复制到temp数据库中八、补充
Navicat操作MongoDB增删改查的完整代码
use DATABASE_NAME #如果数据库不存在则创建数据库否则切换到指定数据库
show dbs #查看所有数据库
db.dropDatabase() #删除当前数据库(默认为test可通过use db_name切换)#创建集合
db.createCollection(name[, options])
db.createCollection(runoob)
db.createCollection(mycol, {capped:true, autoIndexId:true, size:6142800, max:10000}) #创建固定集合 mycol整个集合空间大小 6142800B, 文档最大个数为 10000个
show collections show tables #查看已有集合
#在 MongoDB 中你不需要创建集合。当你插入一些文档时MongoDB会自动创建集合
db.mycol2.insert({name : 菜鸟教程})
db.collection.drop() #删除集合。(use db1,show tb1)#插入文档
db.COLLECTION_NAME.insert(document) 或 db.COLLECTION_NAME.save(document)save()如果_id主键存在则更新数据如果不存在就插入数据(类似于insert方法)。该方法新版本中(3.2版本之后)已废弃可以使用db.collection. insertOne()或db.collection.replaceOne()来代替。insert(): 若插入的数据主键已经存在则会抛 org.springframework. dao.DuplicateKeyException 异常提示主键重复不保存当前数据。#db.collection.insertOne() 用于向集合插入一个新文档
db.collection.insertOne(document,{writeConcern: document}
)
#db.collection.insertMany() 用于向集合插入一个多个文档
db.collection.insertMany([ document 1 , document 2, ... ],{writeConcern: document,ordered: boolean}
)
#document要写入的文档writeConcern写入策略默认为 1即要求确认写操作0 是不要求ordered指定是否按顺序写入默认 true按顺序写入。db.col.insert({title: MongoDB 教程, description: MongoDB 是一个 Nosql 数据库,by: 菜鸟教程,url: http://www.runoob.com,tags: [mongodb, database, NoSQL],likes: 100
}) 或
document({title: MongoDB 教程, description: MongoDB 是一个 Nosql 数据库,by: 菜鸟教程,url: http://www.runoob.com,tags: [mongodb, database, NoSQL],likes: 100
});
db.col.insert(document)#更新文档
db.collection.update(query,update,{upsert: boolean,multi: boolean,writeConcern: document}
)query : update的查询条件类似sql update查询内where后面的update : update的对象和一些更新的操作符如$,$inc...等也可以理解为sql update查询内set后面的upsert : 可选这个参数的意思是如果不存在update的记录是否插入objNew,true为插入默认是false不插入。multi : 可选mongodb 默认是false,只更新找到的第一条记录如果这个参数为true,就把按条件查出来多条记录全部更新。writeConcern :可选抛出异常的级别。db.col.update({title:MongoDB教程},{$set:{title:MongoDB}})#以上语句只会修改第一条发现的文档如果你要修改多条相同的文档则需要设置 multi 参数为 true
db.col.update({title:MongoDB教程},{$set:{title:MongoDB}},{multi:true})#save()方法通过传入的文档来替换已有文档_id 主键存在就更新不存在就插入
db.collection.save(document,{writeConcern: document}
)
#两个参数同update对应参数#删除文档
db.collection.remove(query,{justOne: boolean,writeConcern: document}
)
query :可选删除的文档的条件justOne : 可选如果设为true或1则只删除一个文档如果不设置该参数或使用默认值false则删除所有匹配条件的文档writeConcern :可选抛出异常的级别。
db.users.remove({status:D},true)
#删除满足年龄小于20的所有文档
db.users.remove( { age: { $lt: 20 } },{ writeConcern: { w: majority, wtimeout: 5000 } }
)
#删除满足匹配条件的最多一个文档。filter为查询的过滤条件
db.collection.deleteOne(filter, {writeConcern: document #用于控制写入何时应答及超时}
)
#删除满足匹配条件的所有文档语法、参数同deleteOne
db.collection.deleteMany(filter, {writeConcern: document }
)
#删除所有数据
db.col.remove({})
#MongoDB remove()函数是用来移除集合中的数据。在执行remove()函数前先执行 find()命令来判断执行的条件是否正确这是一个比较好的习惯。#查询文档 and,or
db.collection.find(query, projection)
#projection 可选使用投影操作符指定返回的键。查询时返回文档中所有键值 只需省略该参数即可默认省略。
#如果你需要以易读的方式来读取数据可以使用 pretty() 方法pretty() 方法以格式化的方式来显示所有文档格式如下
db.col.find().pretty() #以易读的方式来读取数据
#findOne() 方法只返回一个文档
#MongoDB的find()方法可以传入多个键(key)每个键(key)以逗号隔开即常规SQL 的AND条件。WHERE key1value1 AND key2value2
db.col.find({key1:value1, key2:value2}).pretty()
db.col.find({$or: [{key1: value1}, {key2:value2}]}
).pretty()
db.col.find({likes: {$gt:50}, $or: [{by: 菜鸟教程},{title: MongoDB 教程}]}).pretty() # 类似常规SQL语句为 where likes50 AND (by 菜鸟教程 OR title MongoDB 教程)
db.member.find({_id :{$gt: 2}, age:18});
db.member.find({_id :{$gt: 2}}).sort({_id:-1});
#返回指定字段,注_id默认是显示的,只有_id不显示是设置0,其他字段都不可以设置0
find({查询条件可以空},{显示的字段:1})MongoDB 与 RDBMS Where 语句比较
操作格式范例RDBMS中的类似语句等于{key:value}db.col.find({by:菜鸟教程}).pretty()where by 菜鸟教程小于{key:{$lt:value}}db.col.find({likes:{$lt:50}}).pretty()where likes 50小于或等于{key:{$lte:value}}db.col.find({likes:{$lte:50}}).pretty()where likes 50大于{key:{$gt:value}}db.col.find({likes:{$gt:50}}).pretty()where likes 50大于或等于{key:{$gte:value}}db.col.find({likes:{$gte:50}}).pretty()where likes 50不等于{key:{$ne:value}}db.col.find({likes:{$ne:50}}).pretty()where likes ! 50
mongo查询操符: e q , eq, eq,ne, i n , in, in,nin, g t , gt, gt,get, l t , lt, lt,lte, a n d , and, and,or, n o t , not, not,nor,$all, e l e M a t c h , eleMatch, eleMatch,size, s l i c e , slice, slice,exists
mongo操作符描述对比mysql$e等值比较find({_id :{ $eq: 1}}) 等价于 find({id : 1})id1$ne不等于指定值,find({_id:{$ne:1}})id!1或id1$in数组中包含 find( { _id :{ $in: [ 1,2 ] } } )id in (1,2)$nin数组中不包含find( { _id :{ $nin: [ 1,2 ] } } )id not in (1,2) g t , gt, gt,get, l t , lt, lt,lte$and与并且查询find({$and:[ { _id:{ $gt:1} },{ _id:{ $lt:4} } ]})id1 and id4$or或查询find({$or:[ { _id:1 },{ _id: 3} ]})id1 or id3$not非查询非小于3的数据 find({_id :{$not :{ $lt: 3 } } })id3$nor即非查询find( { $nor: [ { _id: 1 }, { _id: 2 }, { _id: 3 }] } )(id!1 and id!2 and id!3)$all同时包含查询tag同时包含3和9的数据tag是一个数组find({tag:{$all:[3,9]}})可查看下面示例无$elemMatch有一个元素匹配即可find({job:{$elemMatch:{city:‘beijing’,company:‘xiaomi’}}})可查看下面示例无$size匹配数组大小find({tag:{$size:3}})可查看下面示例无$slice返回数组中第几个元素find({job:{KaTeX parse error: Expected ‘EOF’, got ‘}’ at position 43: …ompany:‘baidu’}}̲},{name:1,job:{slice:1}})可查看下面示例无$exists匹配是否包含查询字段的文档find({name:{$exists:true}})无
新增db.集合名称.insert/save/insertOne(文档)
修改db.集合名称.update(条件,{操作种类:{文档}})
删除db.集合名称.remove(条件)
#查询所有数据2种写法
db.book.find()
db.getCollection(book).find()
db.book.find({type:工具书}) #条件查询db.book.remove({type:工具书}) #条件删除
db.book.remove({}) #删除所有#新增数据2种方式
db.book.save({name:springboot});
db.book.insert({name:mango good});
db.book.save({name:springboot,type:工具书});#修改name:springboot的数据为name,springboot2
# update:遇到满足条件的第一条数据修改updateOne:修改满足条件的第一条数据updateMany:修改所有满足条件的
db.book.update({name:springboot},{$set:{name:springboot2}})
db.book.updateOne({name:springboot2},{$set:{name:springboot3}})
db.book.updateMany({name:springboot},{$set:{name:springboot2}})$type 操作符是基于BSON类型来检索集合中匹配的数据类型并返回结果(Double 1;String 2;Object 3)
db.col.find({title : {$type : 2}}) 或
db.col.find({title : {$type : string}})limit(number) 在MongoDB中读取指定数量的数据记录
db.COLLECTION_NAME.find().limit(NUMBER)
skip(number) 跳过指定数量的数据默认参数为0
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
db.col.find({},{title:1,_id:0}).limit(1).skip(1) //显示第二条数据使用sort()方法对数据进行排序sort()方法可以通过参数指定排序的字段并使用1和 -1来指定排序的方式其中1为升序排列而-1是用于降序排列.
db.COLLECTION_NAME.find().sort({KEY:1})
skip(), limilt(), sort()三个放在一起执行的时候执行的顺序是先sort(), 然后是skip()最后是显示的limit()扫描全集合的查询效率是非常低索引通常能够极大的提高查询的效率。索引是特殊的数据结构索引存储在一个易于遍历读取的数据集合中索引是对数据库表中一列或多列的值进行排序的一种结构。
db.collection.createIndex(keys, options) //创建索引Key值为你要创建的索引字段1为指定按升序创建索引如果你想按降序来创建索引指定为-1即可
db.col.createIndex({title:1,description:-1}) //多字段创建索引
db.col.getIndexes() //查看集合索引
db.col.totalIndexSize() //查看集合索引大小
db.col.dropIndexes() //删除集合所有索引
db.col.dropIndex(索引名称) //删除集合指定索引聚合(aggregate)主要用于处理数据(诸如统计平均值求和等)并返回计算后的数据结果。有点类似 SQL 语句中的 count(*)。$sum,$avg,$min/max,$push,$addToSet,$first/last
db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)db.mycol.aggregate([{$group : {_id : $by_user, num_tutorial : {$sum : 1}}}]) 类似于sql语句
select by_user, count(*) from mycol group by by_userMongoDB复制是将数据同步在多个服务器的过程.
MongoDB备份(mongodump可以导出所有数据到指定目录中)与恢复(mongorestore,恢复备份的数据)
mongodump -h dbhost -d dbname -o dbdirectory
-o:备份的数据存放位置例如c:\data\dump当然该目录需要提前建立在备份完成后系统自动在dump目录下建立一个test目录这个目录里面存放该数据库实例的备份数据
mongorestore -h hostname:port -d dbname path
pathmongorestore 最后的一个参数设置备份数据所在位置例如c:\data\dump\test。你不能同时指定 path 和 --dir 选项--dir也可以设置备份目录。mongostat和mongotop 两个命令来监控MongoDB的运行情况。
mongostat是mongodb自带的状态检测工具在命令行下使用(安装目录下的bin目录 输入mongostat)。它会间隔固定时间获取mongodb的当前运行状态并输出。
mongotop也是mongodb下的一个内置工具mongotop提供了一个方法用来跟踪一个MongoDB的实例查看哪些大量的时间花费在读取和写入数据。 mongotop提供每个集合的水平的统计数据。默认情况下mongotop返回值的每一秒。(用法同mongostat)
mongotop number //sleeptime参数可不使用等待的时间长度以秒为单位MongoDB关系 1:1,1:N,N:1,N:N
嵌入式方法/关系
引用式方法/关系把用户数据文档和用户地址数据文档分开通过引用文档的 id 字段来建立关系参考 MongoDB常用命令详细讲解最全、Mongo基本命令