mongodb基本语法及操作(增删改查)
查看有哪些数据库: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()
mongodb基本语法及操作(增删改查)相关推荐
- Mongodb命令操作增删改查
Mongodb命令操作增删改查 需求描述 新增5 人 查询 修改 删除 数据结构 {"_id" : ObjectId("59f938235d93fc4af8a37114& ...
- MySQL 之基础操作增删改查等
一:MySQL基础操作 使用方法: 方式一: 通过图型界面工具,如 Navicat,DBeaver等 方式二: 通过在命令行敲命令来操作 SQL ( Structure query language ...
- 数据库的操作 增删改查 mysql
数据库的操作 增删改查 mysql 登陆数据库 查看全部的数据库 系统提供的库,除了 test 是给我们练手的 其它的不要碰 mysql库,保存了系统重要内容,比如帐户 root帐户的用户名,密码,就 ...
- NodeJS里如何连接MySQL并分别操作增删改查
本文简介 Node.js 里连接 MySQL ,并分别操作增删改查 . 你需要在电脑里安装一下 MySQL ,最好再安装一个数据库管理工具.我使用的是 MySQL Workbench ,这是一款 My ...
- MongoDB 之 手把手教你增删改查 MongoDB - 2
我们在 MongoDB 之 你得知道MongoDB是个什么鬼 MongoDB - 1 中学习了如果安装部署一个 MongoDB 如果没看到我的金玉良言的话,就重新打开一次客户端和服务端吧 本章我们 ...
- Django 07模型层—单表操作(增删改查)
单表查询 一.数据库相关设置 ''' # Mysql连接配置 DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': ...
- java对mysql的简单操作——增删改查的总结
增删改查的详细内容可以点击以下链接: java对mysql的简单操作--增加数据 java对mysql的简单操作--删除数据 java对mysql的简单操作--修改数据 java连接mysql5.1教 ...
- nodejs笔记五--MongoDB基本环境配置及增删改查;
一.基本环境配置: 1,首先到官网(http://www.mongodb.org/downloads )下载合适的安装包,然后一步一步next安装,当然可以自己更改安装目录:安装完成之后,配置环境变量 ...
- PHP:ThinkPHP5数据库操作增删改查-Model类
1.Model的命名规范 一般model的名字和表名是对应的,例如 表名 pre_user -> 模型名 User.php User 表名 pre_user_info -> 模型名 Use ...
- Hibernate修改操作 删除操作 查询操作 增加操作 增删改查 Hibernate增删查改语句...
我用的数据库是MySQL,实体类叫User public class User {private Integer uid;private String username;private String ...
最新文章
- 在实践中我遇到stompjs, websocket和nginx的问题与总结
- 目标跟踪初探(DeepSORT)
- Pytorch交叉熵损失函数torch.nn.functional as F
- python 字符串填充0
- qt 字体不随dpi_Windows – QT5字体渲染在各种平台上不同
- Forefront_TMG_2010-TMG发布SSL OWA Exchange 2010
- linux算法设计,红黑树的原理分析和算法设计
- 如何启动和关闭oracle数据库,Oracle数据库启动和关闭方式总结
- Web Hacking 101 中文版 十、跨站脚本攻击(二)
- html 字体图标 颜色怎么改,关于css:如何设置Font Awesome Icons的图标颜色,大小和阴影的样式...
- PHP特级课视频教程_第二集 网站大数据存储_李强强
- python resample_Python骚操作:利用Python获取摄像头并实时控制人脸!
- SSH框架总结(框架分析+环境搭建+实例源码下载)
- boot入门思想 spring_SpringBoot基础入门
- 借着酒劲儿,是真敢说!程序员酒后吐真言
- 9种退出极域课堂的方法
- MapReduce打包jar包并运行的步骤操作以及重要的注意事项
- 2014年中南大学上机复试
- 基于java的格式转换,word 转 pdf、word 转图片、office 格式转换、在线文件预览
- [AHK]Windows10中如何只通过键盘就将窗口移动到其他虚拟桌面?
热门文章
- 一年三轮融资3亿 深睿医疗领跑AI医疗行业
- 【转】台湾教授-如何阅读科研论文
- 如何画Flot折线图
- 本地打印机获取以及文件打印 java
- 趋势丨从云到多云,超融合与云管平台如期而遇
- ECCV2022 | 生成对抗网络GAN论文汇总(图像转换-图像编辑-图像修复-少样本生成-3D等)...
- html5英文参考文献,外文参考文献引用常识介绍
- 7-18 二分法求多项式单根 (C语言)
- 栈溢出:Infinite recursion (StackOverflowError)
- 又火了一本神书,看小说就能学 JavaScript?