目录
db.createCollection("collectionName")
(插入)db.collectionName.insert([{name:'yf',age:18},{name:'mm',age:null}])
(查找)db.collectionName.find({age:{$gt:3,$lte:5}})
db.collectionName.find({$or:[{name:'yf'},{age:18}]})
db.collectionName.find({name:/^a.*c$/})
db.collectionName.find({},{name:0})
db.collectionName.find({}).sort({age:1})
db.collectionName.find().limit(3).sort({age:1})
db.collectionName.find().skip(2)
db.collectionName.find().count()
db.collectionName.distinct('name')
(修改)db.collectionName.update({name:'yf'},{$set:{age:16}},{upsert:true})
db.collectionName.updateMany({name:'abc'},{$inc:{age:100}})
(删除)db.collectionName.remove({name:'a'},{justOne:true})
MongoDB
一个基于分布式文件存储的数据库。介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
对比RDBMS(术语)
RDBMS(关系数据库管理系统) 与 MongoDB 对应的术语:
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
通过下图实例,我们也可以更直观的了解Mongo中的一些概念:
官网安装
Install MongoDB Community Edition — MongoDB Manual
MongoDB云数据库
保留数据库名
默认存在可以直接访问的数据库。
- admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
- local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
- config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
常用命令行
help
查看命令提示。
数据库操作
use dbname
创建数据库名为dbname(通常都为小写)
show dbs
显示所有数据库(数据库中无集合的不会显示即刚use创建的数据库不会显示)
db.dropDatabase()
删除当前数据库。
db.stats()
查看当前使用的数据库信息,包括名字、大小、有多少个集合等。
db.getMongo()
查看当前数据库链接的地址。
db.getName()
查看当前使用的数据库名
db.version()
查看数据库版本
集合操作
db.createCollection("collectionName")
创建集合collectionName。
db.getCollectionNames()
查看当前数据库下所有集合名字。
db.printCollectionStats()
查看当前使用的数据库下所有集合的信息,包括名字、大小、有多少条数据等。
文档(数据)操作
(插入)db.collectionName.insert([{name:'yf',age:18},{name:'mm',age:null}])
在colletionName集合下插入多条数据(当colletionName集合不存在时,会创建该集合再插入数据 )。
(查找)db.collectionName.find({age:{$gt:3,$lte:5}})
显示colletionName集合下所有age大于3小于等于5的数据。不写内容时,为显示所有数据。$gt表示大于,$lt表示小于,$gte表示大于等于,$lte表示小于等于。
db.collectionName.find({$or:[{name:'yf'},{age:18}]})
显示colletionName集合下name:'yf'或者age:18的数据。
db.collectionName.find({name:/^a.*c$/})
显示colletionName集合下所有name以a开头以c结尾的数据。
db.collectionName.find({},{name:0})
显示colletionName集合下所有数据,name字段不显示。
db.collectionName.find({}).sort({age:1})
显示colletionName集合下所有数据并按照age的升序排列,-1表示降序,默认为0不排序。
db.collectionName.find().limit(3).sort({age:1})
显示colletionName集合下按照age的升序排列后的前三条数据(注意sort写limit前或后都是先排序后取数据)。
db.collectionName.find().skip(2)
跳过前2条数据,显示colletionName集合下其它所有数据。
db.collectionName.find().count()
显示colletionName集合有多少条数据。
db.collectionName.distinct('name')
显示colletionName集合下所有name对应的值(去重后的)。
(修改)db.collectionName.update({name:'yf'},{$set:{age:16}},{upsert:true})
将colletionName集合下第一个name:'yf'的数据age设置为16,upsert:true表示没找到就创建一条数据(该参数可不写,默认为false)。
db.collectionName.updateMany({name:'abc'},{$inc:{age:100}})
将colletionName集合下所有name:'abc'的数据age增加16。
(删除)db.collectionName.remove({name:'a'},{justOne:true})
将colletionName集合下第一个name:'a'的数据删除,justOne:true表示只删除一个(默认为false,可选)。