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

公司的一些后端,用的是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表
	
	


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值