MongoDB入门实操《二》(mongodb基本操作)
wptr33 2025-05-02 13:51 6 浏览
常规命令使用
首先我们来了解几个概念,虽然MongoDB入门实操《上篇》这篇文章已经提到过,这里再次加深印象:
集合:Mongo 中的集合就是mysql 的表的表现形式
文档:文档的数据结构和JSON 基本一样,它就是集合(表)中的一条记录,相当于mysql 的行row
字段:Mongo 中的field 相当于mysql 中的column
索引:Mongo 中的index 与mysql 的index 一样
主键:Mongo 中的primary key 与mysql 的一样,其中Mongo 中将_id 自动设置为主键
向集合中插入数据
有两种方式,注意一下插入的数据格式 insert and save,如下:
> db.test.insert({"name":"tony","age":23,"job":"tester"})
WriteResult({ "nInserted" : 1 })
> db.test.save({"name":"tom","age":29,"job":"developer"})
WriteResult({ "nInserted" : 1 })
> db.test.find()
{ "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 23, "job" : "tester" }
{ "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" }
删除集合中的数据
> db.test.remove({"name":"jim"})
WriteResult({ "nRemoved" : 1 })
修改集合中的数据
> db.test.update({"name":"tony"},{$set:{"age":30}}) #只更新第一条记录,name=tony 的age 修改为30
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.test.update({"name":"tony"},{$set:{"age":30}},false,true ); #满足条件的全部更新
备注:上一条命令中false and true 解释:
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新
查询集合中的数据
> db.test.find({"age":{$gt:29}}) #查询age 大于29的文档
{ "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 33, "job" : "tester" }
备注:
MongoDB中条件操作符有:
* (>) 大于 - $gt
* (<) 小于 - $lt
* (>=) 大于等于 - $gte
* (<= ) 小于等于 - $lte (大家可以多去练习)
> db.test.find({"name":{$in:["tony","tom"]}}) #类似mysql 里面的in 操作查询
{ "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 33, "job" : "tester" }
{ "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" }
> db.test.find({"name":"tom","age":29}) #这种就是mysql 里面的 name='tom' and age=29
{ "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" }
> db.test.find({$or:[{"name":"tom"},{"age":33}]}) #这种就是mysql 里面的 name='tom' or age=33
{ "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 33, "job" : "tester" }
{ "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" }
$type操作符是基于集合中对应的数据类型,并返回结果。
> db.test.find() #这是现有的数据
{ "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 33, "job" : "tester" }
{ "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" }
{ "_id" : ObjectId("5eeccc7b613abf5d90d640a2"), "name" : "kim", "age" : 39, "job" : "developer" }
{ "_id" : ObjectId("5eeccd88613abf5d90d640a3"), "name" : "jim", "age" : "39", "job" : "developer" }
> db.test.find({"age":{$type:"string"}}) #这里要求只查询出age 字段值是string 类型的数据
{ "_id" : ObjectId("5eeccd88613abf5d90d640a3"), "name" : "jim", "age" : "39", "job" : "developer" }
> db.test.find({"age":{$type:2}}) #2 和 string 是同一种表示,两种不同方式
{ "_id" : ObjectId("5eeccd88613abf5d90d640a3"), "name" : "jim", "age" : "39", "job" : "developer" }
> db.test.find({"age":{$type:1}}) #1 表示是数字类型,也可以用Double 来代替
{ "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 33, "job" : "tester" }
{ "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" }
{ "_id" : ObjectId("5eeccc7b613abf5d90d640a2"), "name" : "kim", "age" : 39, "job" : "developer" }
limit() 方法的使用,这也相当于是mysql 里面的limit 用法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。
> db.test.find({"age":{$type:1}}).limit(1)
{ "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 33, "job" : "tester" }
skip()方法可以用来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。
> db.test.find({"age":{$type:1}}).skip(1) #跳过第一条记录数据,默认情况下skip() 参数为0
{ "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" }
{ "_id" : ObjectId("5eeccc7b613abf5d90d640a2"), "name" : "kim", "age" : 39, "job" : "developer" }
limit() 与 skip() 方法联合使用:
> db.test.find({"age":{$gt:29}}).skip(1).limit(3)
{ "_id" : ObjectId("5eeccc7b613abf5d90d640a2"), "name" : "kim", "age" : 39, "job" : "developer" }
{ "_id" : ObjectId("5ef74025613abf5d90d640a4"), "name" : "jeffy", "age" : 40, "job" : "developer" }
{ "_id" : ObjectId("5ef74035613abf5d90d640a5"), "name" : "jeee", "age" : 35, "job" : "developer" }
上面这条命令的操作相当于mysql 的 select * from test where age>29 limit 1,3;
总结:今天主要分享了MongoDB 中常见的操作增、删、改和查操作,这将有利于我们快速的进入到MongoDB 的世界中去。
相关推荐
- 史上最强vue总结,面试开发全靠它了
-
vue框架篇vue的优点轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb;简单易学:国人开发,中文文档,不存在语言障碍,易于理解和学习;双向数据绑定:保留了angular的特点,...
- Node.js Stream - 实战篇(node.js 10实战)
-
本文转自“美团点评技术团队”http://tech.meituan.com/stream-in-action.html背景前面两篇(基础篇和进阶篇)主要介绍流的基本用法和原理,本篇从应用的角度,介...
- JavaScript 中的 4 种新方法指南Array.
-
JavaScript中的4种新方法指南Array.prototypeArray其实和Python中的l列表list的操作用非常像JavaScript语言标准的最新版本是ECMAScript...
- Js基础31:内置对象(js 内置对象)
-
js里面的对象分成三大类:内置对象ArrayDateMath...
- 常见vue面试题,大厂小厂都一样(vue经典面试题)
-
一、谈谈你对MVVM的理解?...
- 最全的 Vue 面试题+详解答案(vue面试题2020例子以及答案)
-
前言本文整理了...
- 不产生新的数组,删除数组里的重复元素
-
数组去重的方式有很多,我们可以使用Set去重、filter过滤等,详见携程&蘑菇街&bilibili:手写数组去重、扁平化函数...
- 更简单的Vue3中后台动态路由 + 侧边栏渲染方案
-
时至今日,vue2已经升级到了vue3,动态路由的实现方案也同步做出了一些升级迭代,帮助开发者们更高效的完成业务需求,然后摸鱼。本次逻辑的升级,主要聚焦于2点更加简单的实现逻辑更加便捷的路由配置...
- js常用数组API方法汇总(js数组api有哪些)
-
1.push()向数组末尾添加一个或多个元素,并返回新的长度。//1.push()向数组末尾添加一个或多个元素,并返回新的长度。constarr1=[1,2,3];const...
- JavaScript 数组操作方法大全(js数组的用法)
-
数组操作是JavaScript中非常重要也非常常用的技巧。本文整理了常用的数组操作方法(包括ES6的map、forEach、every、some、filter、find、from、of等)...
- Array类型简介(arrays类常用方法)
-
Array类型除了Object之外,Array类型恐怕是ECMAScript中最常用的类型了。而且,ECMAScript中的数组与其他多数语言中的数组有着相当大的区别。虽然ECMAScript数组与其...
- 鸿蒙开发基础——TypeScript Array对象解析
-
数组对象是使用单独的变量名来存储一系列的值。TypeScript的数组对象提供了强大的类型支持,确保数组操作的类型安全。...
- js中splice的用法,使用说明及例程
-
js中splice的用法,使用说明及例程。splice()方法用于添加或删除数组中的元素,使用起来很怪异。删除会影响原有数组,会返回删除的内容。例1,删除数组内容:varstr=["a...
- 3个 Vue $set 的应用场景(vue中set方法应用场景)
-
大家好,我是大澈!一个喜欢结交朋友、喜欢编程技术和科技前沿的老程序员,关注我,科技未来或许我能帮到你!...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
面试官:git pull是哪两个指令的组合?
-
git 执行pull错误如何撤销 git pull fail
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mysql max (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)