MongoDB入门教程(适合小白)

启动和关闭mongodb服务:

service mongodb start
service mongodb stop

进入shell命令

> mongo

mongodb命令:

show dbs:显示数据库列表 
show collections:显示当前数据库中的集合(类似关系数据库中的表tableshow users:显示所有用户 
use yourDB:切换当前数据库至yourDB 
db.help() :显示数据库操作命令 
db.yourCollection.help() :显示集合操作命令,yourCollection是集合名

创建表,插入数据

use school    #创建数据库或使用数据库
db.createCollection('teacher')    #创建Collection
#插入数据(insert与save的区别)
db.teacher.insert({id:1,name:'zhangshan',age:38})
db.teacher.insert({id:2,name:'lisi',age:47})
db.teacher.insert({id:3,name:'wangwu',age:26})

查询数据

db.teacher.count()  #计数统计
db.teacher.find()  #查询所有记录。相当于:select * from teacher
db.teacher.find({name: 'lisi'})  #查询name='lisi'的记录。相当于: select * from teacher where name='lisi'
db.student.find({},{name:1, age:1}) #查询指定列name、age数据。相当于:select name,age from teacher.name:1表示返回name列,默认_id字段也是返回的,可以添加_id:0(意为不返回_id)写成{name: 1, age: 1,_id:0},就不会返回默认的_id字段了
db.teacher.find({name: 'zhangshan', age: 38}) #and 与条件查询。相当于:select * from student where name = 'zhangshan' and age = 38
db.student.find({$or: [{age: 26}, {age: 38}]}) #or 条件查询。相当于:select * from teacher where age = 26 or age = 38
db.teacher.find({},{name:1,age:1,_id:0}).limit(1).skip(1)    #查询第二行的name列和age列,忽略'_id'

排序

> db.teacher.find({},{name:1, age:1, _id:0}).sort({age:-1})
{ "name" : "lisi", "age" : 47 }
{ "name" : "zhangshan", "age" : 38 }
{ "name" : "wangwu", "age" : 26 }
> db.teacher.find({},{name:1, age:1, _id:0}).sort({age:1})
{ "name" : "wangwu", "age" : 26 }
{ "name" : "zhangshan", "age" : 38 }
{ "name" : "lisi", "age" : 47 }

聚合

use school
db.createCollection('article')
db.article.insert([
{
   _id: 100,
   title: 'MongoDB Overview',
   description: 'MongoDB is no sql database',
   by_user: 'Maxsu',
   url: 'http://www.yiibai.com',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 100
},
{
   _id: 101,
   title: 'NoSQL Overview', 
   description: 'No sql database is very fast',
   by_user: 'Maxsu',
   url: 'http://www.yiibai.com',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 10
},
{
   _id: 102,
   title: 'Neo4j Overview', 
   description: 'Neo4j is no sql database',
   by_user: 'Kuber',
   url: 'http://www.neo4j.com',
   tags: ['neo4j', 'database', 'NoSQL'],
   likes: 750
},
{
   _id: 103,
   title: 'MySQL Overview', 
   description: 'MySQL is sql database',
   by_user: 'Curry',
   url: 'http://www.yiibai.com/mysql/',
   tags: ['MySQL', 'database', 'SQL'],
   likes: 350
}])
*************************************************
#count(*)
> db.article.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
{ "_id" : "Curry", "num_tutorial" : 1 }
{ "_id" : "Kuber", "num_tutorial" : 1 }
{ "_id" : "Maxsu", "num_tutorial" : 2 }
*************************************************
#avg
> db.article.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
{ "_id" : "Curry", "num_tutorial" : 350 }
{ "_id" : "Kuber", "num_tutorial" : 750 }
{ "_id" : "Maxsu", "num_tutorial" : 55 }
*************************************************
#max
> db.article.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
{ "_id" : "Curry", "num_tutorial" : 350 }
{ "_id" : "Kuber", "num_tutorial" : 750 }
{ "_id" : "Maxsu", "num_tutorial" : 100 }

*************************************************
#min
> db.article.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
{ "_id" : "Curry", "num_tutorial" : 350 }
{ "_id" : "Kuber", "num_tutorial" : 750 }
{ "_id" : "Maxsu", "num_tutorial" : 10 }
*************************************************
#sum
> db.article.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
{ "_id" : "Curry", "num_tutorial" : 350 }
{ "_id" : "Kuber", "num_tutorial" : 750 }
{ "_id" : "Maxsu", "num_tutorial" : 110 }
*************************************************

修改数据
db.youCollection.update(criteria, objNew, upsert, multi )
criteria: update的查询条件,类似sql update查询内where后面的
objNew : update的对象和一些更新的操作符(如$set)等,也可以理解为sql update查询内set后面的。
upsert : 如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi: mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。默认false,只修改匹配到的第一条数据。
其中criteria和objNew是必选参数,upsert和multi可选参数


db.teacher.update({name: 'lisi'}, {$set: {age: 30}}, false, true) #相当于:update teacher set age =30 where name = 'lisi';

删除数据

db.teacher.remove({name: 'wangwu'}) #相当于:delete from teacher where name='wangwu'

删除集合

db.teacher.drop()
show collections

删除数据库

> use school
> db.dropDatabase()
{ "dropped" : "school", "ok" : 1 }

退出shell命令行模式

exit或者Ctrl+C

mongodb可视化工具:robomongo, 软件名称:robo3t.
启动robo3t:

cd ~
robo3t-1.1.1-linux-x86_64-c93c6b0/bin/robo3t  #robo3t所在目录

利用Python操作mongodb

from pymongo import MongoClient

conn = MongoClient('mongodb://localhost:27017/')  #连接mongodb
db = conn.testdb  #使用testdb数据库
#在teacher表中插入数据
db.teacher.insert([
 {"name":'zhanshan','age':25},
 {"name":'lisi','age':36},
 {"name":'wangwu','age':27},
])
print("OK!")  #提示完成
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值