查看有哪些数据库: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基本语法及操作(增删改查)相关推荐

  1. Mongodb命令操作增删改查

    Mongodb命令操作增删改查 需求描述 新增5 人 查询 修改 删除 数据结构 {"_id" : ObjectId("59f938235d93fc4af8a37114& ...

  2. MySQL 之基础操作增删改查等

    一:MySQL基础操作 使用方法: 方式一: 通过图型界面工具,如 Navicat,DBeaver等 方式二: 通过在命令行敲命令来操作 SQL ( Structure query language ...

  3. 数据库的操作 增删改查 mysql

    数据库的操作 增删改查 mysql 登陆数据库 查看全部的数据库 系统提供的库,除了 test 是给我们练手的 其它的不要碰 mysql库,保存了系统重要内容,比如帐户 root帐户的用户名,密码,就 ...

  4. NodeJS里如何连接MySQL并分别操作增删改查

    本文简介 Node.js 里连接 MySQL ,并分别操作增删改查 . 你需要在电脑里安装一下 MySQL ,最好再安装一个数据库管理工具.我使用的是 MySQL Workbench ,这是一款 My ...

  5. MongoDB 之 手把手教你增删改查 MongoDB - 2

    我们在  MongoDB 之 你得知道MongoDB是个什么鬼 MongoDB - 1  中学习了如果安装部署一个 MongoDB 如果没看到我的金玉良言的话,就重新打开一次客户端和服务端吧 本章我们 ...

  6. Django 07模型层—单表操作(增删改查)

    单表查询 一.数据库相关设置 ''' # Mysql连接配置 DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': ...

  7. java对mysql的简单操作——增删改查的总结

    增删改查的详细内容可以点击以下链接: java对mysql的简单操作--增加数据 java对mysql的简单操作--删除数据 java对mysql的简单操作--修改数据 java连接mysql5.1教 ...

  8. nodejs笔记五--MongoDB基本环境配置及增删改查;

    一.基本环境配置: 1,首先到官网(http://www.mongodb.org/downloads )下载合适的安装包,然后一步一步next安装,当然可以自己更改安装目录:安装完成之后,配置环境变量 ...

  9. PHP:ThinkPHP5数据库操作增删改查-Model类

    1.Model的命名规范 一般model的名字和表名是对应的,例如 表名 pre_user -> 模型名 User.php User 表名 pre_user_info -> 模型名 Use ...

  10. Hibernate修改操作 删除操作 查询操作 增加操作 增删改查 Hibernate增删查改语句...

    我用的数据库是MySQL,实体类叫User public class User {private Integer uid;private String username;private String ...

最新文章

  1. 在实践中我遇到stompjs, websocket和nginx的问题与总结
  2. 目标跟踪初探(DeepSORT)
  3. Pytorch交叉熵损失函数torch.nn.functional as F
  4. python 字符串填充0
  5. qt 字体不随dpi_Windows – QT5字体渲染在各种平台上不同
  6. Forefront_TMG_2010-TMG发布SSL OWA Exchange 2010
  7. linux算法设计,红黑树的原理分析和算法设计
  8. 如何启动和关闭oracle数据库,Oracle数据库启动和关闭方式总结
  9. Web Hacking 101 中文版 十、跨站脚本攻击(二)
  10. html 字体图标 颜色怎么改,关于css:如何设置Font Awesome Icons的图标颜色,大小和阴影的样式...
  11. PHP特级课视频教程_第二集 网站大数据存储_李强强
  12. python resample_Python骚操作:利用Python获取摄像头并实时控制人脸!
  13. SSH框架总结(框架分析+环境搭建+实例源码下载)
  14. boot入门思想 spring_SpringBoot基础入门
  15. 借着酒劲儿,是真敢说!程序员酒后吐真言
  16. 9种退出极域课堂的方法
  17. MapReduce打包jar包并运行的步骤操作以及重要的注意事项
  18. 2014年中南大学上机复试
  19. 基于java的格式转换,word 转 pdf、word 转图片、office 格式转换、在线文件预览
  20. [AHK]Windows10中如何只通过键盘就将窗口移动到其他虚拟桌面?

热门文章

  1. 一年三轮融资3亿 深睿医疗领跑AI医疗行业
  2. 【转】台湾教授-如何阅读科研论文
  3. 如何画Flot折线图
  4. 本地打印机获取以及文件打印 java
  5. 趋势丨从云到多云,超融合与云管平台如期而遇
  6. ECCV2022 | 生成对抗网络GAN论文汇总(图像转换-图像编辑-图像修复-少样本生成-3D等)...
  7. html5英文参考文献,外文参考文献引用常识介绍
  8. 7-18 二分法求多项式单根 (C语言)
  9. 栈溢出:Infinite recursion (StackOverflowError)
  10. 又火了一本神书,看小说就能学 JavaScript?