MongoDb的学习

	1.MongoDB中bin目录分析
	核心:
	mongod: 数据库核心进程
	mongos: 查询路由器,集群时用
	mongo:  交互终端(客户端)
	
	二进制导出导入:
	mongodump:导出bson数据
	mongorestore: 导入bson
	bsondump: bson转换为json
	monoplog:
	
	数据导出导入
	mongoexport: 导出json,csv,tsv格式
	mongoimport: 导入json,csv,tsv
	
	诊断工具:
	mongostats
	mongotop
	mongosniff  用来检查mongo运行状态
	
	mongodb要求磁盘剩余空间>=4G,如果不够,可以用 --smallfiles 选项
	
	2.mongo入门命令  (注:table在mongodb里叫collections)
	
	use databaseName 选库(如果数据库不存在,则创建数据库,否则切换到指定数据库) 
	db.dropDatabase() 删除当前数据库,默认为 test,你可以使用 db 命令查看当前数据库名
	show dbs/databases  查看当前的数据库 
	db 查看当前使用那个数据库
	show tables/collections 查看当前库下的collection
	db.collection.drop() 删除集合
	
	db.collectionName.find() 查看 (对于查看是最难得后面会有介绍)
	db.collectionName.insert({title:'nice day'}) 增加单篇文档(_id是默认的)
	db.collectionName.insert({_id:8}) 增加单个文档,并指定_id
	db.collectionName.insert([{time:'friday',study:'mongodb'},{_id:9,gender:'male',name:'QQ'}]) 增加多个文档
	
	db.collectionName.remove({}) 删除所有数据
    db.collectionName.remove(查询表达式, 选项)  查询表达式 想当于条件  选项是指  {true/false},是否只删一行, 默认为false
    
	db.collectionName.update(查询表达式,新值,选项) 
	
	db.news.update({name:'QQ'},{name:'MSN'}) 
	是指选中news表中,name值为QQ的文档,并把其文档值改为{name:'MSN'}
	结果: 文档中的其他列也不见了,改后只有_id和name列了
	即--新文档直接替换了旧文档,而不是修改
	
	如果是想修改文档的某列,可以用$set关键字
	db.collectionName.update(query,{$set:{name:’QQ’}}) 默认修改添加最先添加的数据
	
	$set  修改某列的值
	$unset 删除某个列
	$rename 重命名某个列
	$inc 增长某个列
	$setOnInsert 当upsert为true时,并且发生了insert操作时,可以补充的字段 MongoDB2.4版本之后新增的
	
	小试牛刀一下
	db.sb.insert({name:'man',sex:'n',age:20,by:'lock'}) 添加数据
	db.sb.find() 简单查询
	db.sb.find({"a.x":1}) 查询子文档
	db.sb.find().sort({_id:1}) 1与-1分别代表正序与倒序
	db.sb.update({name:'man'},{$set:{name:'sex'},$rename:{sex:'n'},$unset:{by:'lock'},$inc:{age:1}}) 修改name 更改sex列的名字 删除by列 age列自增
	db.sb.find()
	db.sb.update({x:2},{$set:{x:1}},{multi:true}) 修改x 匹配多行
	db.sb.find()
	db.sb.update({x:1},{x:11111},{upsert:true}) 修改x 如果匹配成功就更改 没有了就添加
	db.sb.find().count() 统计集合中有多少条数据
	db.sb.find({x:1},{y:1}) 查x列相等的值 查询指定的列
	db.sb.find({},{x:true,_id:0}) 查询所有文档的x列属性,且不查询_id属性
	db.sb.find({$and:[{x:1},{y:1}]}) 查询x列的值 and y列的值
	db.sb.find({x:{$nin:[1,3]}}) 查询x列中不存在的任意一个值的数据
	db.sb.find({x:{$in:[1,3]}}) 查询x列中任意一个值
	db.sb.find({$or:[{_id:1},{_id:2}]}) 查询x列中任意一个值
	db.sb.find({$or:[{$and:[{a:1},{b:1}]},{c:1}]}) and与or的混合搭配用法
	db.sb.find({$nor:[{x:2},{y:1}]}) 查询x列不为2y列也不1的数据
	db.sb.find({_id:{$ne:1}}) 查询_id列的值不为1的数据
	db.sb.find({id:{$all:[1,2]}}) 是指取出 id列是一个数组,且至少包含 1,2值
	db.sb.find({id:{$exists:true}}) 查询出文档中含有id的列
	db.sb.find({name:/a.*/}) 用正则表达式查询 
	db.sb.find({$where:'this.id==1&&this.age==26'}) 这样的查询写起来简单但是效率不高 因为他还有解析json
	
	$type的操作符认知
	Double 	1 	 
	String 	2 	 
	Object 	3 	 
	Array 	4 	 
	Binary data 	5 	 
	Undefined 	6 	已废弃。
	Object id 	7 	 
	Boolean 	8 	 
	Date 	9 	 
	Null 	10 	 
	Regular Expression 	11 	 
	JavaScript 	13 	 
	Symbol 	14 	 
	JavaScript (with scope) 	15 	 
	32-bit integer 	16 	 
	Timestamp 	17 	 
	64-bit integer 	18 	 
	Min key 	255 	Query with -1.
	Max key 	127 	 
	db.sb.find({_id:{$type:1}}) 你想表达的什么类型直接在$type后面跟上相对应的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值