MongoDB--笔记

	duojianindex ==> 某一个集合(SQL中的表名)
	
	
	使用js语法(循环)插入多条数据:
		for(i=3;i<20;i++)db.duojianindex.insert({"_id":i,"item":"AAA","ratings":[i+1,i+3]};
		
	db.集合名词.count();统计条数
		db.duojianindex.count();
	
	查找记录,按照倒序排列,查找3条,跳过5条记录,限制输出3条
		db.duojianindex.find().limit(3).skip(5).sort({"_id":1});
	
	更新字段
		db.duojianindex.update({"_id":1},{"item":666});
		
	更新字段(更新部分字段)
		 db.duojianindex.update({"x":100},{$set:{"z":10000}});
		 
	 存在就更新,不存在就插入(第三个参数为true)
		db.duojianindex.update({"z":667},{"z":'ok.....'},true);
		
	更新字段(只更新匹配到的第一个文档)
		db.duojianindex.update({"lan":"china"},{"lan":"English"});
		
	更新字段(更新所有匹配的文档)
		db.duojianindex.update({"lan":"china"},{$set:{"lan":"English"}},false,true);
		
	删除操作一条文档
		db.duojianindex.remove({'z':666});
		
	删除整个集合
		db.test.drop();
		
	创建索引(单键索引---name字段类型为:字符串、数值型、时间型)
		db.duojianindex.createIndex({"name":1})
	
	创建索引(多键索引----name字段是数组型)(创建方法同单键索引一样)
		db.duojianindex.createIndex({"name":1})
		
	创建联合索引
		db.duojianindex.createIndex({"name":1,"sex":1})
	
	创建过期索引(30秒的过期时间,创建过期索引的字段必须是ISODate型的时间格式,否则数据不会自动删除)
		db.duojianindex.createIndex({"create_time":1},{expireAfterSeconds:30})
	
	创建全文索引
		db.duojianindex.createIndex({'article':'text'});	//article字段建立全文索引
		或者:db.duojianindex.createIndex({"$**":"text"});	//全字段建立全文索引
			全文索引创建完成后,使用全文索引字段进行查找:
			db.duojianindex.find({$text:{$search:'fild-name'}});
			
		全文索引的"或"查询:(field1,field2,field3三个查询数据,只有要在字段中有一个这样的数据,就符合要求)
			db.duojianindex.find({$text:{$search:"field1 field2 field3"}})
			
		在"或"查询中取出某个字段:(field1,field2两者满足其一,并且去除掉含有field3的)
			db.duojianindex.find({$text:{$search:"field1 field2 -field3"}})
			
		全文索引的"且(and)"查询:(field1,field2,field3三个查询数据同事满足才符合要求)
			db.duojianindex.find({$text:{$search:"\"field1\" \"field2\" \"field3\""}}
			
		对全文索引查询后的结果做相似度排序(number字段是自定义的字段)
			db.duojianindex.find({$text:{$search:"\"张三\" \"李白\""}},{number:{$meta:"textScore"}}).sort({number:{$meta:"textScore"}
	
	索引属性:
		name属性:(起别名)
			创建索引时候,为所创建的索引起别名(索引名称起作 title_index)
				db.duojianindex.createIndex({"title":1},{"name":"title_index"})
			根据索引名称删除索引
				db.duojianindex.dropIndex("title_index")
		unique属性:唯一索引
			当几个字段组成联合索引的时候,若果指定了unique属性为true,表示在集合中不能重复插入建立了唯一索引字段的数据
				例如:name和sex组成了联合唯一索引,则不能插入name和sex同时一样的数据
				db.duojianindex.createIndex({"name":1,"sex":1},{unique:true})
		sparse属性:稀疏性
			MongoDB在创建索引的时候,是默认为所有记录创建稀疏索引的(true),稀疏索引指的是:一旦你创建了一个索引的话,
			由于MongoDB插入数据的时候没有严格的限制插入数据的字段和已有的字段保持一致,所以新插入的数据字段如果和已有的数据的字段不一样,
			那么mongodb依然会为新添加的数据没有的字段添加稀疏索引,例如:你之前为集合创建了一个索引:
			db.duojianindex.createIndex({"mobile":1}),为“mobile”字段创建了一个索引,当你新添加一条数据,比如:
			db.duojianindex.insert({"name":"Jack","sex":"man"}),这条新插入的数据没有mobile字段,但MongoDB依然会为这条新插入的数据创建mobile索引
			(这样的后果可能是造成磁盘空间的浪费和新插入数据速度时候下降,应为插入数据的时候要为插入的数据创建索引)
				db.duojianindex.find({"title":1},{sparse:true})
				
		地理位置索引:
			创建地理位置索引(2d)
				db.location.createIndex({"x":"2d"}),
			插入地理位置:([100,80]--表示经度是100,维度是80。经度范围是-180~180,维度范围是-90~90)
				db.location.insert({"x":[100,80]})
			查询地理位置:($near查询,距离查询点最近的点,默认最多返回100个最近的点)
				db.location.find({x:{$near:[1,1]}})
				使用$maxDistance限定距离查询点最远距离多远,用$minDistance限定距离查询点最近的点,
					db.location.find({x:{$near:[1,1],$maxDistance:3}})
					db.location.find({"x":{$near:[4,4],$maxDistance:3,$minDistance:2.5}})
				
			$geoWithin查询
				矩形查询:$box
					$box:[[x1,y1],[x2,y2]]
				($box的两个数据分别表示矩形的左下方顶点、右上方顶点,查询在某一个矩形内的点,包括边界)
					db.location.find({x:{$geoWithin:{$box:[[0,0],[0,1]]}}})
			
				圆形查询:$center
					$center:[[x1,y1],R]    分别表示圆心坐标和半径
					查找圆内的点:db.location.find({"x":{$geoWithin:{$center:[[0,0],2]}}})
	
				查询位于多边形内的点:$polygon
					$polygon:[[x1,y1],[x2,y2],[x3,y3],[x4,y4],[x5,y5].....],表示多边形的顶点坐标
				例如:db.location.find({"x":{$geoWithin:{$polygon:[[0,0],[-10,3],[1,7],[3,-2],[1,3]]}}})
				
				
			//geoNear的使用(也可以查询地理)
				参数说明:geoNear--查询的集合名称,near--查找的起始点,maxDistance--最远距离
							minDistance--最近距离,num--限制返回多少个点
				
				db.runCommand({geoNear:"location",near:[0,0],maxDistance:2,minDistance:1,num:2})
				返回数据如下:
					"results" : [
							{
									"dis" : 1,
									"obj" : {
											"_id" : ObjectId("5c3d3fedab3dd96f1832d660"),
											"x" : [
													0,
													1
											]
									}
							},
							{
									"dis" : 1,
									"obj" : {
											"_id" : ObjectId("5c3d4006ab3dd96f1832d663"),
											"x" : [
													1,
													0
											]
									}
							}
					],
					"stats" : {
							"nscanned" : 5,
							"objectsLoaded" : 2,
							"avgDistance" : 1,
							"maxDistance" : 1,
							"time" : 523
					},
					"ok" : 1
			}
				
	
	
	
	
	
	
	
	

猜你喜欢

转载自blog.csdn.net/shj_php/article/details/86490501
今日推荐