mongodb

Posted ellisonzhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb相关的知识,希望对你有一定的参考价值。

2019年6月10日:
MongoDB回顾:
MongoDB缺陷-牺牲掉大部分磁盘空间
1.MongoDB启动
	mongod 启动 查找的db目录默认是在 C:\data\db
	mongod --dbpath=D:\data\db
	[thread1] waiting for connections on port 27017
	默认端口 27017

2.MongoDB指令
	show databases 查询当前服务器磁盘中的数据库
	use dbname 切换或者在内存中创建数据库
		当dbname 存在时切换
		当dbname 不存在时在内存中创建数据库
	
	show tables 查询当前数据库磁盘中的数据表(Collection)
	db	代指当前使用的数据库 查询当前使用的数据库名
	db.tablename 查看或创建当前数据库下的数据表(内存中)
	
	MongoDB - 使用了不存在的对象即创建该对象
	
3.增删改查
	增加
	db.tablename.insert() 增加数据 官方在3.2版本以后不推荐的写法
	db.tablename.insertOne()增加单条数据
	db.tablename.insertMany([,,])增加多条数据
	
	查询
	db.tablename.find() 查找符合条件的所有数据 
	db.tablename.findOne() 查找符合条件的第一条数据
	查询条件
		并列条件id:1,age:6
		$or
		$and
		$in
		$all
		
	修改 Array Object==字典 Array+Object - Object+Array+Object
	db.tablename.update() 修改数据 官方在3.2版本以后不推荐的写法
	db.tablename.updateOne(,$修改器:预修改值) 查找并更新符合条件的第一条数据
	db.tablename.updateMany(,$修改器:预修改值) 查找并更新符合条件的所有数据
	修改器 : 
	$set  强制修改 $set:age:2
	$inc  引用增加 $inc:age:1 $inc:age:-1
	$unset 删除字段 $unset:age:1
	Array: #列表
	$push 在Array中追加一个元素 $push:user_list:"alexander" append()
	$pushAll 在Array中追加多个元素 $pushAll:user_list:[1,2,3,4,5,1,2,3] extend()
	$pull 在 Array 中删除一条符合条件的数据 $pull:user_list:1
	$pullAll 在 Array 中删除多个符合条件的元素	$pullAll:user_list:[1,2,3,4,5]
	$pop 在 Array 中删除最后一个元素或者是第一个元素
		$pop:user_list:-1 删除第一个元素
		$pop:user_list:1 删除最后一个元素
	
	例:name:1,hobby:[1,2,3,4,5,6]	
	将 6 改为 7
	db.tablename.updateOne(hobby:6,name:1,$set:"hobby.$":7)
	将 3 从列表中删除
	db.tablename.updateOne(name:1,$pull:hobby:3)
	
	Array + Object:
	name:1,hobby:[type:1,detail:"抽烟",type:2,detail:"喝酒"]	
	将 抽烟 改为 飙车
	db.tablename.updateOne("hobby.detail":"抽烟",$set:"hobby.$.detail":"飙车")
	
	删除:
	db.tablename.remove() 删除所有符合条件的数据 官方在3.2版本以后不推荐的写法
	db.tablename.deleteOne() 删除第一条符合条件的数据
	db.tablename.deleteMany() 删除所有符合条件的数据
	


4.$
	存储符合条件元素的下标索引
	例:name:1,hobby:[1,2,3,4,5,6]	
	将 6 改为 7
	db.tablename.updateOne(hobby:6,name:1,$set:"hobby.$":7)
	Array + Object:
	name:1,hobby:[type:1,detail:"抽烟",type:2,detail:"喝酒"]	
	将 抽烟 改为 飙车
	db.tablename.updateOne("hobby.detail":"抽烟",$set:"hobby.$.detail":"飙车")


5.$关键字
	数学比较符:
	$lt 小于
	$lte 小于等于
	$gt 大于(G == g == 哥)
	$gte 大于等于
	$ne	不等于 (no不 e等于)
	$eq 等于 (: 在 :不能使用或者是不代表等于的情况使用 $eq)
	
	$查询关键字:
	$or 或条件查询 name:1,age:6 在不同字段情况下查询
	db.tablename.find($or:[name:1,age:6])
	$and 并列条件
	db.tablename.findOne($and:[name:1,age:6])
	db.tablename.findOne(name:1,age:6)
	$in 或条件查询 相同字段的查询
	db.tablename.find(age:$in:[6,10,12,14,16])
	//db.tablename.find($or:[age:6,age:10])
	
	$all 查询子集或完全子集
	例:name:1,hobby:[1,2,3,4,5,6]	
	db.tablename.findOne(hobby:$all:[1,5,3]) 不存在顺序
	//db.tablename.findOne(hobby:$all:[1,3,7]) 不是子集



1.sort
db.users.find().sort( _id:-1 ) // 排序 1 正序 -1 倒序

2.limit
db.users.find().limit(5)  //选取 
db.users.find().limit(5).sort( _id:-1 )  //选取排序逻辑顺序 , 先排序 再选取 

3.skip
db.users.find().skip(9) // 跳过 
db.users.find().skip(2).sort( _id:-1 ) // 跳过排序逻辑熟悉怒 先排序 后跳过

混合用法
db.users.find().limit(5).skip(5) // 逻辑顺序 先跳过再选取
db.users.find().limit(5).skip(5).sort( _id:-1 ) // 排序跳过选取,逻辑顺序 1.先排序 2.跳过 3.选取

4.分页
db.users.find().limit(2).skip(0).sort( _id:-1 ) // 第一页
db.users.find().limit(2).skip(2).sort( _id:-1 ) // 第二页
db.users.find().limit(2).skip(4).sort( _id:-1 ) // 第三页
db.users.find().limit(2).skip(6).sort( _id:-1 ) // 第四页
db.users.find().limit(2).skip(8).sort( _id:-1 ) // 第五页

  

以上是关于mongodb的主要内容,如果未能解决你的问题,请参考以下文章

ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项

mongodb关联查询

无法在 MongoDB(猫鼬)文档中追加数组

在 Spring MongoDB 的 ReplaceRoot 管道阶段使用 $mergeObjects

如何创建一个查询来查找 2 个数字之间的值,这些数字是 MongoDB 中的字符串类型

MongoDB GridFS