转自个人网站:noSQL学习之MongoDB(1) - Tron ' blog
noSQL学习之MongoDB(2) - Tron ' blog
MongoDB是非关系型数据库中的文档数据库
文档数据库一般用类JSON格式存储数据,存储的内容是文档型的。这样也就有机会对某些字段建立索引,实现关系数据库的某些功能,但不提供对参照完整性和分布事务的支持。 ——摘自GitHub
SQL MongoDB 解释(SQL/MongoDB)
database database 数据库/数据库
table collection 二维表/集合
row document 记录(行)/文档
column field 字段(列)/域
index index 索引/索引
table joins --- 表连接/嵌套文档
primary key primary key 主键/主键(_id字段)
上表为MongoDB与sql的对比
通过Shell操作MongoDB:
打印出数据库
show dbs
创建并切换到school数据库:
use school
删除当前数据库
db.dropDatabase()
创建一个集合(相当于sql中的表)
db.createCollection("colleges")
删除一个集合
db.college.drop()
向一个集合中插入数据:
db.student.insert({stuid: 1001, name: '小王', age: 20})#在MongoDB中插入文档时如果集合不存在会自动创建集合
查看所有文档
db.students.find()
更新集合中的文档
db.students.update({stuid: 1001}, {'$set': {gender: '男'}})#更新集合为students的stuid等于1001的文档,设置一个新的值
上述第一个参数可以给一个键值对来确定某一个文档,第二个参数即为需要更新的值
更新或插入
db.students.update({stuid: 1003}, {'$set': {name: 'Tom', gender: '男'}},upsert=true)
最后一个参数为真时,如果没有匹配的文档,则会创建一个文档
以整理的形式查看集合中的全部文档
db.students.find().pretty()
删除集合中的文档
db.students.remove({stuid:"1003"})
MongoDB有它自己内置的查询条件:
$lt, $lte, $gt, $gte
以上四个分别表示为:< 、 <= 、 > 、 >=
demo1:
db.students.find({stuid: {'$gt': 1001}}, {_id: 0, name: 1, tel: 1}).pretty()
查询stuid大于1001的文档只显示name和tel字段
demo2:
db.students.find({'$or': [{name: 'Tron'}, {gender: '男'}]}, {_id: 0, name: 1, gender: 1}).pretty()
查询名字为Tron或者性别为男的文档,显示他的名字和性别
demo3:
db.students.find().skip(1).limit(1).pretty()
查询学生的文档跳过第一条文档且限制只展示一个文档
demo4:
db.students.find({}, {_id: 0, stuid: 1, name: 1}).sort({stuid: -1})
查询文档,且只展示文档的stuid与name,sort方法可以指定文档的一个域(等于字段),1为正序,-1为倒序
demo5:
db.students.ensureIndex({name: 1})
以名字建立索引