MongoDB

1.介绍:

mongodb是一种文档型非关系型数据库,也可以说是一种非结构性数据库.

每一行都是一个文档,每一个字段都是一个属性,每一行的属性和个数可能不同

MongoDB的结构主要是:

​ 数据库–>集合–>文档–>字段

2.特点

当要删除数据时要进入数据才能删除

mongoDB的主键是ObjectId类型的,自增长.

MongoDB中的文档存储是对键值对的形式存储的,其中键是不能重复的,且键可以不使用引号引上

值的类型可以是引号中的字符串,还可以是其他类型的,或者还可以是文档类型的

3.语句

(1).添加

db.集合名.insertOne() — 添加一个 注意:这种写法只能添加一个

db.集合名.insertMany – 添加多个 注意:这种写法只能添加多个,不能添加一个

我们通常的写法是;

db.集合名.insert() — 这种写法可以添加一个,也可以添加多个

例:

db.users.insert(
	{name:"lalal",age:18,sex:"男"}
)//添加一条


db.users.insert(
	[
        {
        	name:"lalal",
        	age:23,address:"sy"
        },{
        	name:"nini",
        	hobby:"sing",
        	address:"bj"
        }
    ]
)//添加两条


(2).修改:

db.collection.update(	
	<query>,
    <update>,
    {
    	upsert:<boolean>,
    	//当结果为true时,如果有数据则进行更改,如果没有符合条件的数据,则进行添加文档
    	multi:<boolean>,
    	//当结果为true时,包所有符合条件的数据进行更新,如果为false,则就将符合条件数据的第一天进行修改
    	writeConcern:<document>
    }
)

//例:
db.user.update(
	{name:"lalal"},
    {age:18},//表示将名字为lalal的文档改为age:18(注意:这里更新的是整个文档(一行).而不是一个字段)
    {}
);

db.user.update(
	{
    	name:"lalal"
    },{
    	$set:{
    		city:"sy"
    	}
    //当为$set时,如果符合条件的文档有该字段,则进行更改如果符合条件的文档没有这个字段,则增加这个字段
	//当为$unset时,当其他对象没有该属性时,则删除该字段,当其他对象有该属性,则清空本对象的这个字段
    },{
    	upsert:true
    }
)





(3).删除

//语法
db.集合名.remove(
	<query>,//条件
    {
    	justOne:<boolean>//为true,则删除一个 为false,则查询到的全部删除
    }
)

//例:

db.user.remove(
	{name:"lalal"},//条件
    {justOne:false}
    //这里当结果为false时,则找到多少条就删除多少条
    //如果为true,就删除一条
)

(4).查询

db.集合名.find()  //查询全部
db.集合名.find({},{})
//第一个大括号里的参数表示条件
//第二个大括号里的参数表示查询的字段,如果不写则表示查询全部


db.users.find({},{name:1,age:1})
//注意  第二个大括号里的数只能有两个 1 和 0 
//1为显示数据    0为不显示指定字段
//且所有的数必须一致
//大括号里的数除了_id以外,要么都是1,要么都是0

//例:
db.users.find(
	{
    	name:"lalal"
    },
    {
    	name:1,
    	age:1,
    	_id:0
    }
)
//查询名字为lalal的文档,显示name和age字段,不显示_id字段


db.users.find(
    {},
    {
    	name:1,
    	age:1,
    	_id:0
    }
).sort(
    {
    	age:1,
    	name:1
    	//sort 排序   当数为1的时候,升序    当数为-1时,降序
    	//这里表示将文档按照年龄进行升序排列,如果年龄相同了,则按照姓名进行降序排列
    }
).skip(3).limit(3)
//分页  ::  skip()   表示start   limit()表示pageSize


db.users.find(
    {
    	age:30
    }
)  //age=30


db.users.find(
    {
    	age:{
    		$gt:30
    	}
    }
)  //age>30


db.users.find(
    {
    	age:{
    		$gt:30
    	},id:{
    			$lt:10
    	}
    }
)  //age>30 且 id<10


db.users.find(
    {
    	name: {
        	$in: ["dagei", "xiaofei"]
    	}
	}
)
//查旬  name in ("dafei","xiaofei")


db.users.find({
	city:{
		$exists:true//为true表示查询有这个字段的文档,false表示没有这个字段的文档
	}
})

4.运算符

(1).逻辑运算符

db.users.find(
	{
    	$and:[
            {
            	age:{
            		$gte:28
            	},age{
            		$lte:30
            	}
            }
        ]
    }
)//查询28<=age<=30


db.users.find(
	$or:[
        {
        	age:{
        		$lt:28
        	},age{
        		$gt:30
        	}
        }
    ]
)  //查询age<=28 or age >= 30的文档


db.users.find(
	{
    	$or:[
            {
            	age:28
            },{
            	age:30
            }
        ]
    }
)  //查询 age=28 or age=30的文档



(2).正则表达式

//模糊查询
db.users.find(
	{
    	name:{
    		$regex:/fei/
    	}
    }
)//查询名字中带有fei的文档


db.users.find(
	{
    	name:{
    		$regex:/fei%/
    	}
    }
) //查询名字以fei结尾的文档


db.users.find(
	{
    	name:{
    		$regex:/%fei/
    	}
    }
)//查询名字以fei开头的文档


db.users.find(
	{
    	name:{
    		$regex:/fei/i
    	}
    }
)//查询名字中带有fei的文档,并且忽略大小写



(3).数组

//添加数组字段
db.users.updateMany(	
	$set:{
    	hobby:[]
    }
)

db.users.update(
	{
    	name:"dafei"
    },{
    	$push:{
    		hobby:"java"
    	}
    }
)//在姓名为dafei的文档的hobby数组字段中添加java值

db.users.update(
	{
    	name:"dafei"
    },{
    	$addToSet:{
    		hobby:"java"
    	}
    }
)//在姓名为dafei的文档的hobby数组字段中添加java值


db.users.update(
	{
    	name:"dafei"
    },{
    	$addToSet:{
    		hobby:{
    			$each:["java","git","resful","spring","ssm"]
    		}
    	}
    }
)//以数组的形式向姓名我dafei的文档的hobby数组字段中添加元素



p u s h 和 push和 pushaddToSet的区别:

​ $push可以添加重复的数据

​ $addToSet:不能添加重复的数据,还可以以数组的形式添加元素,但是重复的数据仍然无法添加

db.users.update(
	{
    	name:"dafei"
    },{
    	$pop:{
    		hobby:-1  这里表示删除hobby数组字段中的第一个元素
    		//当为 1 时,表示删除数组中最后一个元素,当为 -1 时表示删除数组中的第一个元素
    	}
    }
)

db.users.update(
	{
    	name:"dafei"
    },{
    	$pull:{
    		hobby:"git"//删除hobby数组中的所有git
    	}
    }
)

db.users.update(
	{
    	name:"dafei"
    },{
    	$set:{
    		"hobby.1":"javaaaaaa"
    	}
    }
)//将hobby数组中索引为1的元素改为javaaaaaa


db.users.update(
	{
    	name:"dafei",
    	hobby:"javaaaaaa" //将hobby中的javaaaaaa作为标记
    },{
    	$set:{
    		"hobby.$":"java"//hobby.$为引用标记,将标记处改为java
    	}
    }
)


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值