当前位置: 首页 > news >正文

Mongodb对集合(表)和数据的CRUD操作

一、集合(对应数据库的表)

1、查看当前库里的所有集合

show collections

2、新建集合

显式创建

db.createCollection("user")

隐式创建

db.user.insert({name:"zhangsan"})

3、删除集合

db.user.dorp()

 

二、文档(对应数据库中的行)

1、新增(insert、save、insertOne/insertMany)

1.1、使用insert方法新增

db.user.insert({name:"zhangsan",age:20,sex:"boy"})

或者先定义变量再保存变量

lisi={name:"lisi",age:30,sex:"girl",phone:"13999999999"}
db.user.insert(lisi)

1.2、使用save方法新增

db.user.save({name:"xiaoli",age:18,sex:"girl"})

或者先定义变量再保存变量

wangwu={name:"wangwu",age:28,sex:"boy",email:"xxx@xx.com"}
db.user.save(wangwu)

1.3、使用insertOne(单条插入,等同于insert)和insertMany(批量插入)

db.user.insertOne( obj, <optional params> ) - insert a document, optional parameters are: w, wtimeout, j
db.user.insertMany( [objects], <optional params> ) - insert multiple documents, optional parameters are: w, wtimeout, j

 2、删

db.user.remove({name:"wangwu"})
db.user.deleteOne({name:"lisi"})
db.user.deleteMany({age:29})

3、改

3.1、save方法 

带id的save为更新(只更新一条)

db.user.save({ "_id" : ObjectId("5afbbbc88a20764e0abc31ac"), "name" : "wangwu", "age" : 18, "sex" : "boy", "email" : "2xxx@xx.com" })

3.2、update方法

db.user.update( query, object[, upsert_bool, multi_bool] )
upsert_bool:true表示如果没找到query相关的记录,则插入一条值为obj的记录
muliti_bool: true表示如果query查到多条,则全部更新下

其中局部修改器有2个:修改器: $inc 和 $set。
$set就是赋值的意思,$inc是自增的意思

带过滤条件的全量更新(只更新匹配的第一条)

db.user.update({name:"wangwu"},{"name" : "wangwu", "age" : 28, "sex" : "boy", "email" : "2xxx@xx.com" })

带过滤条件的更新某些字段(只更新匹配的第一条)

db.user.update({name:"wangwu"},{$set:{email:"3xxx@qq.com"}})

查询数据不存在,新增一条

 db.user.update({age:18},{$set:{age:30}},true,false)
db.user.update({age:18},{name:"18girl",age:30},true,false)

根据muliti_bool参数的true和false不同,3.2版本开始引入了单条更新和多条更新的方法

db.user.updateOne( filter, update, <optional params> ) - update the first matching document, optional parameters are: upsert, w, wtimeout, j

db.user.updateMany( filter, update, <optional params> ) - update all matching documents, optional parameters are: upsert, w, wtimeout, j

4、查

db.user.find([query],[fields]) - query is an optional query filter. fields is optional set of fields to return.

find方法如下很多子方法

find(<predicate>, <projection>) modifiers
        .sort({...})
        .limit(<n>)
        .skip(<n>)
        .batchSize(<n>) - sets the number of docs to return per getMore
        .collation({...})
        .hint({...})
        .readConcern(<level>)
        .readPref(<mode>, <tagset>)
        .count(<applySkipLimit>) - total # of objects matching query. by default ignores skip,limit
        .size() - total # of objects cursor would return, honors skip,limit
        .explain(<verbosity>) - accepted verbosities are {'queryPlanner', 'executionStats', 'allPlansExecution'}
        .min({...})
        .max({...})
        .maxScan(<n>)
        .maxTimeMS(<n>)
        .comment(<comment>)
        .snapshot()
        .tailable(<isAwaitData>)
        .noCursorTimeout()
        .allowPartialResults()
        .returnKey()
        .showRecordId() - adds a $recordId field to each returned object

Cursor methods
        .toArray() - iterates through docs and returns an array of the results
        .forEach(<func>)
        .map(<func>)
        .hasNext()
        .next()
        .close()
        .objsLeftInBatch() - returns count of docs left in current batch (when exhausted, a new getMore will be issued)
        .itcount() - iterates through documents and counts them
        .getQueryPlan() - get query plans associated with shape. To get more info on query plans, call getQueryPlan().help().
        .pretty() - pretty print each document, possibly over multiple lines
db.user.findOne([query], [fields], [options], [readConcern])

db.user.findOneAndDelete( filter, <optional params> ) - delete first matching document, optional parameters are: projection, sort, maxTimeMS

db.user.findOneAndReplace( filter, replacement, <optional params> ) - replace first matching document, optional parameters are: projection, sort, maxTimeMS, upsert, returnNewDocument

db.user.findOneAndUpdate( filter, update, <optional params> ) - update first matching document, optional parameters are: projection, sort, maxTimeMS, upsert, returnNewDocument

 由于查询比较复杂,特在后面的blog中详细说明

相关文章:

  • (2)Java 简介
  • innobackupex 在增量的基础上增量备份
  • elasticsearch+logstash+kibana+redis
  • 有向无环图(DAG)的最小路径覆盖
  • winSCP:无权访问
  • VS Code 折腾记 - (13) VS Live Share (可提高效率的代码实时协作插件)的使用姿势
  • 百度Api完成在线地图定位显示
  • windows堆栈研究以及线程安全
  • 给nginx生成自签名证书
  • Python之合并PDF文件
  • git 常用命令说明
  • CSS3学习之background-origin和background-clip区别
  • Kuberbetes1.10 集群部署
  • Linux常用基本命令:uniq-去重复
  • ijkplayer视频播放
  • 分享的文章《人生如棋》
  • [Vue CLI 3] 配置解析之 css.extract
  • 11111111
  • Git学习与使用心得(1)—— 初始化
  • iOS 颜色设置看我就够了
  • Linux后台研发超实用命令总结
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • RxJS: 简单入门
  • sessionStorage和localStorage
  • SQLServer之创建数据库快照
  • vuex 学习笔记 01
  • Wamp集成环境 添加PHP的新版本
  • Webpack 4 学习01(基础配置)
  • Zsh 开发指南(第十四篇 文件读写)
  • 反思总结然后整装待发
  • 飞驰在Mesos的涡轮引擎上
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 欢迎参加第二届中国游戏开发者大会
  • 设计模式(12)迭代器模式(讲解+应用)
  • 项目管理碎碎念系列之一:干系人管理
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 在weex里面使用chart图表
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #if #elif #endif
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (附源码)php新闻发布平台 毕业设计 141646
  • (六)软件测试分工
  • (排序详解之 堆排序)
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (转)memcache、redis缓存
  • (转)重识new
  • .htaccess 强制https 单独排除某个目录
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET 使用 XPath 来读写 XML 文件
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)