MongoDB3.4 shell CRUD操作
输入db,显示你正在操作的数据库;切换数据库,输入use dbName,如果数据库不存在的话会自动帮我们创建一个;使用show dbs可以显示所有可用的数据库。
测试数据在文末
插入文档
插入操作的行为表现
_id字段:在MongoDB中,存储于集合中的文档需要一个唯一的_id字段作为primary key。如果文档中没有指定_id字段,MongoDB将使用ObjectId作为_id字段的默认值;也就是说,如果文档在插入时没有包含顶层的_id字段,MongoDB驱动将添加持有ObjectId的_id字段。
插入
db.users.insertOne():向集合插入单个文档 3.2新功能
db.users.insertOne({name:"webb",age:23})
插入成功后会返回对应的ObjectId:
{"acknowledged" : true,"insertedId" :ObjectId("590b237b0207f4bae6db100a")}
db.users.insertMany():向集合插入多个文档 3.2新功能
db.users.insertMany([{name:"lebo",age:22},{name:"jack",age:24}])
插入成功后会返回对应的ObjectId:{"acknowledged" : true,"insertedIds" : [ObjectId("590b24f00207f4bae6db100b"),ObjectId("590b24f00207f4bae6db100c")]}
db.collection.insert():向集合插入一个或多个文档,想要插入一个文档,传递一个文档给该方法;想要插入多个文档,传递文档数组给该方法。
db.users.insert({name:"webb",age:24})
该操作返回了含有操作状态的 WriteResult 对象.插入文档成功返回如下 WriteResult 对象:
WriteResult({ "nInserted" : 1 })
nInserted 字段指明了插入文档的总数.如果该操作遇到了错误, WriteResult 对象将包含该错误信息。
向users集合插入多个文档:
db.users.insert([{name:"lebo",age:25},{name:"jack",age:26}])
该方法返回了包含操作状态的 BulkWriteResult 对象.成功插入文档返回如下 BulkWriteResult 对象:
BulkWriteResult({"writeErrors" : [ ],"writeConcernErrors" : [ ],"nInserted" : 2,"nUpserted" : 0,"nMatched" : 0,"nModified" : 0,"nRemoved" : 0,"upserted" : [ ] })
查询文档
条件查询
查找当前集合所有数据:
db.users.find({}) db.users.find()
指定查询条件:
db.users.find({age:22})
使用$in后面的查询条件(也可以使用or替代):
db.users.find({age:{$in:[22,23]}})
复合查询:
db.users.find({name:"ahn", age:22})
使用or:
db.users.find({$or:[{status:"A"},{age:{$lt:30}}]})
返回查询的映射字段
映射文档:映射文档限制了返回所有匹配文档的字段。映射文档可以指明包括哪些字段或者排除哪些字段:
{ field1: <value>, field2: <value> ... }
value:
1或true在返回的文档中包含字段
0或false排除该字段
只返回指定字段及_id字段:
db.users.find({status:"A"}, {name:1, status:1})
只返回指定字段:
db.users.find({status:"A"}, {name:1, status:1,_id:0})
返回除了排除字段外的字段:
db.users.find({status:"A"}, {name:0, status:0})
返回嵌入文档中的指定字段:
db.users.find({status:"A"}, {name:1,status:1,"favorites.food":1})
查询值为null或者不存在的字段
插入测试数据:
db.users.insert([{ "_id" : 900, "name" : null },{ "_id" : 901 }])
相等过滤器:将返回两个文档。如果该查询使用了sparse索引,不管怎样,那么该查询将仅仅匹配 null 值,而不匹配不存在的字段。
db.users.find({name:null})
类型筛查:查询仅仅匹配那些包含值是null的name字段的文档。
db.users.find({name:{$type:10}})
存在行筛查:只返回没有name字段的文档。
db.users.find({name:{$exists:false}})
更新文档
行为表现
_id字段:一旦设定,你不能更新_id字段的值,你也不能用有不同_id字段值的替换文档替换已经存在的文档。
文档大小:当执行更新操作增加了文档大小,超过了为该文档分配的空间时,更新操作会在磁盘上重新定位该文档。
更新文档中指定字段
db.collection.updateOne():更新匹配过滤条件第一个匹配的文档 3.2新功能
使用$set操作符更新指定的字段
使用$currentDate操作符更新lastModified字段的值到当前时间
db.users.updateOne({"name":"sue"},{$set:{type:3},$currentDate:{lastModified:true}})
db.collection.updateMany():更新所有匹配过滤条件的文档 3.2新功能
db.users.updateMany({"name":"lebo"},{$set:{age:22},$currentDate:{lastModified:true}})
db.collection.update():更新匹配过滤条件第一个匹配的文档
db.users.update({name:"webb"},{$set:{age:21},$currentDate:{lastModified:true}})
文档替换
db.collection.replaceOne():将匹配过滤条件的第一个文档替换为新文档。 3.2新功能
db.users.replaceOne({name:"webb"},{name:"webb",age:21})
db.collection.update():将匹配过滤条件的第一个文档替换为新文档。
db.users.update({name:"xyz"},{name:"mee", age:25, type:1, status:"A"} )
删除文档
删除所有文档
db.collection.deleteMany() 3.2新功能
db.users.deleteMany({})
db.collection.remove()
db.users.remove({})
删除满足条件的所有文档
db.collection.deleteMany() 3.2新功能
db.users.deleteMany({name:"lebo"})
db.collection.remove():删除所有type为1的文档。
db.users.remove({type:1})
仅删除一个满足条件的文档
db.collection.deleteOne() 3.2新功能
db.users.deleteOne({name:"webb"})
db.collection.remove():将参数设置成1来删除第一个name为webb的文档。
db.users.remove({name:"webb"},1)
测试数据:
db.users.insertMany( [{_id: 1,name: "sue",age: 19,type: 1,status: "P",favorites: { artist: "Picasso", food: "pizza" },finished: [ 17, 3 ],badges: [ "blue", "black" ],points: [{ points: 85, bonus: 20 },{ points: 85, bonus: 10 }]},{_id: 2,name: "bob",age: 42,type: 1,status: "A",favorites: { artist: "Miro", food: "meringue" },finished: [ 11, 25 ],badges: [ "green" ],points: [{ points: 85, bonus: 20 },{ points: 64, bonus: 12 }]},{_id: 3,name: "ahn",age: 22,type: 2,status: "A",favorites: { artist: "Cassatt", food: "cake" },finished: [ 6 ],badges: [ "blue", "red" ],points: [{ points: 81, bonus: 8 },{ points: 55, bonus: 20 }]},{_id: 4,name: "xi",age: 34,type: 2,status: "D",favorites: { artist: "Chagall", food: "chocolate" },finished: [ 5, 11 ],badges: [ "red", "black" ],points: [{ points: 53, bonus: 15 },{ points: 51, bonus: 15 }]},{_id: 5,name: "xyz",age: 23,type: 2,status: "D",favorites: { artist: "Noguchi", food: "nougat" },finished: [ 14, 6 ],badges: [ "orange" ],points: [{ points: 71, bonus: 20 }]},{_id: 6,name: "abc",age: 43,type: 1,status: "A",favorites: { food: "pizza", artist: "Picasso" },finished: [ 18, 12 ],badges: [ "black", "blue" ],points: [{ points: 78, bonus: 8 },{ points: 57, bonus: 7 }]} ] )
转载于:https://www.cnblogs.com/lebo0425/p/6810082.html
MongoDB3.4 shell CRUD操作相关推荐
- MongoDB 实战教程:数据库与集合的 CRUD 操作篇
你好,我是悦创. 公众号:AI悦创 简介 MongoDB 是非关系型数据库(NoSQL)的代表之一,它具有高灵活.可水平扩展.高可用等优秀特性,并且它提供了强大又丰富的查询语句使开发者能够随心所欲地操 ...
- mybatis CRUD操作
mybatis CRUD操作 select select标签是mybatis最常用的标签之一. select语句有很多属性可以详细的配置每一天sql语句. id 命名空间唯一的标识. 接口中的方法名与 ...
- mybatis 一对多_Springboot整合Mybatis实现级联一对多CRUD操作
在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...
- php 命令执行crud_如何使用原始JavaScript执行CRUD操作
php 命令执行crud by Zafar Saleem 通过Zafar Saleem 如何使用原始JavaScript执行CRUD操作 (How to perform CRUD operations ...
- vue.js crud_如何使用VS Code和ADO.NET使用ASP.NET Core执行CRUD操作
vue.js crud 介绍 (Introduction) In this article we are going to create a web application using ASP.NET ...
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...
- shell 字符串操作(长度,查找,替换)详解
#################################################### 工作中字符串操作举例 #################################### ...
- 创建包含CRUD操作的Web API接口-第一部
在这里,我们将创建一个新的Web API项目,它将使用实体框架实现Get,POST.PUT和DELETE方法来实现CRUD操作. 首先,在Visual Studio 2013 for Web expr ...
- java中利用框架传入相同的url实现crud操作_还在手写CRUD代码?这款开源框架助你解放双手!
相信很多朋友在项目中使用的ORM框架都是MyBatis,如果单用MyBatis来操作数据库的话,需要手写很多单表查询的SQL实现.这时候我们往往会选择一个增强工具来实现这些单表CRUD操作,这里推荐一 ...
最新文章
- 桌面显示菜单图标下面的字搞起阴影了,怎么弄掉?
- js define函数_聊聊JS模块化发展历程
- ButterKnife的简单使用
- 【Blog.Core开源】快速升级.NET 6.0
- Firefox无法启动,提示Profile is yet in use by another Firefox
- [html] 对于rtl网站的适配有哪些方案?
- C/C++混淆点-与
- resnet论文解读及代码实现
- 洛谷——P1426 小鱼会有危险吗
- SourceInsight3.5---a valid serial number was not entered问题解决
- JAVA里面一加到一百等于多少_从1加到100等于多少 【求和算法汇总】
- linux vi输入日历,linux下Vi编辑器命令大全(上)
- wsl arch linux图形,WSL2(Arch Linux)使用systemd
- 电路原理 | 二阶动态电路
- 神舟战神s7和z7哪个好
- Android 手机灭屏流程分析详解
- HTML使用无序列表制作一级菜单和二级下拉菜单
- 检测域名微信屏蔽,检测微信域名屏蔽API
- 痴呆患者血脑屏障(Blood-Brain Barrier, BBB)功能测量
- 必须要了解股权设计的四大核心