您的位置:首页 > 数据库 > Mongodb

MongoDB_ Mongo数据库增删查改shell操作命令

2016-07-31 22:58 459 查看
公司的一些后端,用的是MongoDB数据库,之前都没听说过...

上网查了下,感觉还挺好玩的...

整理了一些常用的 MongoDB shell 命令....

怕自己以后会忘记....

我在自己的电脑上装了MongoDB数据库,Windos系统...没办法,公司的数据库不能乱搞...

怎么安装MongoDB , 这里我就不说了..自己去百度谷歌....

下面的那个启动MongoDB数据库,是看自己的配置的,别乱来...嘿嘿...

我看得比较浅..不深入...

想深入了解的话...看看这两个文档吧..

一个是MongoDB权威指南,另一个是MongoDB2.4 的权威文档.

MongoDB权威指南+MongoDB官方文档

1.启动MongoDB数据库
mongod.exe --dbpath D:\MongoDB\db
启动数据库之后,才可以启动自带的	Shell    (mongo.exe)

在 MongoDB 中基本的概念是文档,集合,数据库.

基本概念
SQL术语			MongoDB术语		解释说明
database		database 		 数据库
table			collection		数据库表/集合
row				document		数据记录行/文档
column 			field			数据字段/域
index 			index 			索引
table joins						表连接,MongoDB不支持
primary key		primary key		主键,MongoDB自动将_id字段设置为主键.

一个MongoDB中可以建立多个数据库
MongoDB的默认数据库为"db",该数据库存储在db目录中.
MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中.

插入:
insert函数添加一个文档到集合里面.
首先可以创建一个局部变量post,然后用insert存入表中. 例如:
post = {
"title":"My Blog Post",
"content":"Here's my blog post",
"date": new Date()
}
db.myblog.insert(post)

当然了,你也可以这么写:
db.user.insert({"name":"Java","age":0})
db.user.insert({"name":"C++","age":1})
db.user.insert({"name":"C--","age":2})
db.user.insert({"name":"Python","age":3})
db.user.insert({"name":"JavaScript","age":4})
db.user.insert({"name":"AngularJs","age":5})
db.user.insert({"name":"jQuery","age":6})
db.user.insert({"name":"Go","age":7})
db.user.insert({"name":"IOS","age":8})
db.user.insert({"name":"Android","age":9})
db.user.insert({"name":"ExtJs","age":10})

db.user.insert({"name":{"first":"Json","last":"Boume"},"age":11})

数组:
db.food.insert({"fruit":["apple","banana","peach"]})
db.food.insert({"fruit":["apple","kumquat","orange"]})
db.food.insert({"fruit":["cherry","banana","apple"]})
db.food.insert({"fruit":["apple","banana"]})

向数据库插入数据,没有指定ID,mongodb会自动添加一个全局唯一的ID

查询:
普通查询
db.user.find();		//查询user表下所有的数据,shell默认显示20条

db.user.findOne();	//查看user表下的一条数据

db.user.find().count();	//查看user表中有多少条数据

db.user.find({"name":"Java"})//查询name对应的数据

db.user.find({"name":"Java","age":0})//多条件查询,每个条件的关系是 "and"

db.user.find({},{"name":1})	//指定返回的键,此处指定返回"name"

db.user.find({},{"name":1,"_id":0}})//指定返回符合的"name",并且屏蔽"_id"字段(不屏蔽,每次查询默认出现)

db.user.find({},{"name":1,"age":1,"_id":0})//指定返回"name","age"两个字段,并且屏蔽"_id"字段

条件查询(函数)
"$lt"	: 小于
db.user.find({"age":{"$lt":5}})	//查询 age小于5 的数据	(不包含5)

"$lte"	: 小于等于
db.user.find({"age":{"$lte":5}})//查询 age小于等于5 的数据

"$gt"	: 大于
db.user.find({"age":{"$gt":5}})	//查询 age大于5 的数据	(不包含5)

"$gte"	: 大于等于
db.user.find({"age":{"$gte":5}})//查询 age大于等于5 的数据

"$ne"	: 不相等 (取反值)
db.user.find({"age":{"$ne":5}})	//查询 age不等于5 的数据

"in" : 用来查询一个键的多个值 (支持不同的数据类型)
db.user.find({"age":{"$in":[0,1,2]}})	//查询user表,age字段为0,1,2的数据

"nin" : 返回与查询条件不匹配的数据("$in"的反义)
db.user.find({"age":{"$nin":[1,2]}})	//显示"age"不为1,2的所有数据

"or" : 不用解释,"or"接受一个包含所有可能条件的数组作为参数
db.user.find({"$or":[{"age":{"$in":[1,2]}},{"name":"ExtJs"}]})	//查询age为1,2 name为ExtJs的数据.

组合查询 :
db.user.find({"age":{"$lt":5,"$gt:0"}})

"limit" : 限制结果数量(指定上限,而非下限)
//查询的全部数据中,只显示前面5条数据.
db.user.find().limit(5)	//不加"limit(5)",会显示全部的数据,加上之后,就显示前五条.

"skip" : 限制结果数量(指定下限,而非上限)
//查询全部数据中,不显示前面的三条,3条数据之后的数据.
db.user.find().skip(3)	//查询全部数据后,显示从开始三条数据之后的数据.(丢弃前三条)

"sort" : 升序/降序 (-1:降序/从大到小 , 1:升序/从小到大)
db.user.find().sort({"age":-1})	//降序
db.user.find().sort({"age":1})	//升序

//按照name升序,age降序
db.user.find().sort({"name":1,"age":-1})

日期类型查询
(模拟 查找2007/1/1 前注册的数据)
start = new Date("01/01/2007")
db.user.find({"registered":{"$lt":start}})

数组查询:
db.food.find({"fruit":"apple"})

$all : 通过多个元素来匹配数组 	这个函数,没有双引号!!
db.food.find({"fruit":{$all:["apple","banana"]}})	//查询既有"apple"又有"banana"的数据

"$size" : 可以使用其查询指定长度的数组.
db.food.find({"fruit":{"$size":2}})

查询内嵌文档
db.user.insert({"name":{"first":"Json","last":"Boume"},"age":11})

查询 :
db.user.find({"name.first":"Json"})	//查询"name"下面,"first"为"Json"的数据.
db.user.find({"name.first":"Json","name.last":"Boume"})

聚合 :
"count()" : 放回当前表中文档的数量.
db.user.find().count()	//返回user表中,文档的数量.

"distinct" : 用来找出给定键的不同的值.(去重复)
db.runCommand({"distinct":"user","key":"age"})	//runCommand是关键字,distinct对应的是表名,key对应的是指定的键.

更新:
//update最少接收两个参数,第一个是要更新文档的限定条件.第二个是新的文档.
//假设咱们要给文档新增一个值,则需要增加一个新的键.
post = []
db.myblog.update({"title":"My Blog Post"},post)

删除:
db.user.remove({"name":"Java"})	//删除name为"Java"的数据
db.user.remove();	//这个命令会删除user集合中的所有的文档,但不会删除集合本身
db.user.remove({});	//最新版本报错,试了下,换种写法
db.myblog.drop()	//删除myblog表
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐