mongodb基本语法及操作(增删改查)

本文详细介绍了如何在MongoDB中创建、查询、修改和删除王者集合中的文档,包括insertOne、insertMany、find、update、remove和drop等操作,以及各种查询和数据操作符的使用。
摘要由CSDN通过智能技术生成

查看有哪些数据库:show dbs

切换到test数据库:use test

查看test数据库中的集合:show collections

我们创建一个王者集合

1新增

db.wangzhe.insertOne(

... {

... _id: "fashiyijie",

... name: "diaochan",

... nanduValue: 70

... }

... )

如果使用存在的_id创建文档会怎么样呢

db.wangzhe.insertOne(

... {

... name: "zhugeliang",

... nanduValue: 50

... }

... )

创建多个文档

db.wangzhe.insertMany([

... {

... name: "zhenji",

... nanduValue: 20

... },

... {

... name: "wangzhaojun",

... nanduValue: 20

... }

... ])

如果我想加字段了,怎么办了,需要改动表结构吗?

db.wangzhe.insertOne(

... {

... type: "fashi",

... name: "daji",

... nanduValue: 10

... }

... )

文档中包含文档

db.wangzhe.insertOne(

... {

... type: ["fashi","cike"],

... name: "buzhihuowu",

... nanduValue: 10,

... mingwen: {"mengyan":10,"lunhui":5,"xinyan":5}

... }

... )

2查询

查询全部文档

db.wangzhe.find()

db.wangzhe.find().pretty()

匹配查询

db.wangzhe.find({name:"diaochan"})

db.wangzhe.find({name:"diaochan", nanduValue:100})

比较操作符 查询($eq $ne $gt $lt $in $nin)

读取dianchao的详情文档

db.wangzhe.find({name:{$eq:"diaochan"}})

读取不属于dianchao的信息文档

db.wangzhe.find({name:{$ne:"diaochan"}})

读取难度大于50的文档

db.wangzhe.find({nanduValue:{$gt:50}})

读取daji和zhenji的文档

db.wangzhe.find({name:{$in:["daji","zhenji"]}})

读取不是daji和zhenji的账户文档

db.wangzhe.find({name:{$nin:["daji","zhenji"]}})

逻辑运算符($not $and $or $nor)

读取难度不小于50的文档

db.wangzhe.find({nanduValue:{$not:{$lt:50}}})

读取nandu大于50并且用户姓名排在gongben之后的文档

db.wangzhe.find({nanduValue:{$gt:50},name:{$gt:"gongben"}})

读取nandu大于40并且小于80的文档

db.wangzhe.find({nanduValue:{$gt:40,$lt:80}})

读取属于daji或wangzhaojun的文档

db.wangzhe.find({$or:[{name:{$eq:"daji"}}, {name:{$eq:"wangzhaojun"}}]})

读取不属于daji和diaochan且nandu不小于40的文档

db.wangzhe.find({

$nor:[

... {name:"daji"},

... {name:"diaochan"},

... {nanduValue:{$lt:40}}

... ]

... })

字符操作符

读取包含类型字段的文档

db.wangzhe.find({"type":{$exists:true}})

db.wangzhe.find({"mingwen.xinyan":{$exists:true}})

读取文档主键是字符串的信息文档

db.wangzhe.find({ _id:{$type:"string"}})

读取文档主键是对象主键或是复合主键的文档

db.wangzhe.find({ _id:{$type:["objectId","object"]}})

关于数组的查询 type为fashi并且cike

db.wangzhe.find({type:{$all:["fashi","cike"]}})

运算操作符

读取姓名以d或z开头的文档

db.wangzhe.find({name:{$in:[/^d/,/^z/]}})

读取用户姓名包含LIE(不区分大小写)的文档

db.wangzhe.find({name:{$regex: /ZH/, $options:'i'}})

文档投影查询

db.wangzhe.find({},{_id:0,name:1,type:1})

$slice对type字段投影时,只返回type数组中第一个元素

db.wangzhe.find({ },{_id:0,name:1,type:{$slice:1}})

关联查询

3修改

更新文档命令语法

db.<collection>.update(<query>,<update>,<options>)

query定义更新操作时筛选文档的条件

update提供更新内容

options声明一些更新操作的参数

更新整篇文档

将zhugeliang的英雄难度更改为60

db.wangzhe.update({name:"zhugeliang"},{name:"zhuge",nanduValue:60})

在使用<update>替换整篇被更新文档时,只有第一篇符合query筛选条件的文档会被更新。

更新特定字段

更新daji的难度值和基本信息

db.wangzhe.update(

... {name:"daji"},

... {$set:

... {

... nanduValue:5,

... info:{

... createTime:new Date("2022-08-18T16:00:00Z"),

... picUrl:"这是一个图片地址"},

... }

... }

... )

更新buzhihuowu的联系电话。(使用下标,0表示type数组中第1 个元素)

db.wangzhe.update(

... {name:"buzhihuowu"},

... {$set:

... {

... "type.0":"zhanshi"

... }

... }

... )

添加buzhihuowu新的英雄属性

db.wangzhe.update(

... {name:"buzhihuowu"},

... {$set:

... {

... "type.2":"cike"

... }

... }

... )

删除字段

删除daji的文档类型和info

db.wangzhe.update(

... {name:"daji"},

... {$unset:

... {

... type:"",

... "info.picUrl":"",

... }

... }

... )

重命名字段

如果$rename命令要重命名的字段并不存在,则文档内容不会被改变。

db.wangzhe.update(

... {name:"zhuge"},

... {$rename:

... {

... "notExist":"name"

... }

... }

... )

如果新字段名已经存在,则原有这个字段会被覆盖

用yingxiong代替name,原来contact字段数组会被覆盖。

db.wangzhe.update(

... {name:"zhuge"},

... {$rename:

... {

... "name":"yingxiong"

... }

... }

... )

更新字段值

db.wangzhe.update(

... {name:"diaochan"},

... {$inc:

... {

... nanduValue:-0.5

... }

... }

... )

db.wangzhe.update( {name:"daji"}, {$mul: { nanduValue:0.5 } } )

如果被更新的字段不存在,会添加。

db.wangzhe.update(

... {name:"daji"},

... {$inc:

... {

... notyetExist:10

... }

... }

... )

数组更新操作符

$addToSet 向数组中增加元素

$pop 从数组中移除元素

$pull 从数组中有选择性的移除元素

$pullAll 从数组中有选择性的移除元素

$push 向数组中增添元素

向diaochan的信息文档中添加英雄属性

db.wangzhe.update(

... {name:"diaochan"},

... {$addToSet:{type:"cike"}}

... )

向karen账户文档中添加多个属性(做为内嵌数组插入)

db.wangzhe.update( {name:"diaochan"}, {$addToSet:{type:["fashi","daye"]}}

... )

删除type数组中内嵌数组[‘type1’,’type2’]中第1个元素

db.wangzhe.update(

... {name:"diaochan"},

... {$pop:{"type.1":-1}})

从diaochan的type中删去包含’ke’字母的元素

db.wangzhe.update(

... {name:"diaochan"},

... {$pull:{type:{$regex:/ke/}}}

... )

向数组字段中添加元素,类似$addToSet,但功能更强大。

db.wangzhe.update(

... {name:"diaochan"},

... {$push:{koujue:"二技能不能断"}}

... )

给集合加字段,更新多个文档

db.wangzhe.update(

... ... {},

... ... { $set:{

... ... zhuangbei:"xiezi"

... ... }

... },

... {multi:true}

... )

4删除

db.wangzhe.remove({Value:50})

如果只想删除满足筛选条件的第一篇文档,可以用justOne

删除一篇nandu小于50的文档

db.wangzhe.remove(

... {nanduValue:{$lt:50}},

... {justOne:true}

... )

删除所有文档

db.wangzhe.remove({})

删除集合

db.wangzhe.drop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值