js常用增删改查方法/js比较运算符 逻辑运算符 赋值运算符 算术运算符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js常用增删改查方法/js比较运算符 逻辑运算符 赋值运算符 算术运算符相关的知识,希望对你有一定的参考价值。

参考技术A

js数组遍历某个值求和

一、增

1、push()

可接收任意数量的参数,把它们逐个添加至数组末尾,并返回修改后数组的长度。例如:

2、unshift()

该方法与push()类似,也可接收任意数量的参数,只不过是将参数逐个添加至数组前端而已,同样返回新数组长度。咱们接着上面的例子:

3、concat()

该方法与push()方法有点类似,同样是将元素添加至数组末尾,只不过这个数组已经不是原来的那个数组了,而是其副本,所以concat()操作数组后会返回一个新的数组。具体用法如下:

① 不传参数,返回当前数组副本
② 传递一或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中
③ 传递非数组参数,这些参数就会被直接添加到结果数组的末尾

继续接着上面的栗子:

例子中一目了然,原数组保持不变,新数组后面添加了4、5、6三个元素。

4、splice()

前面的三个方法都具有很大局限性,因为不是添加到数组前就是数组后,而splice()就不一样了,它非常灵活和强大。灵活是因为它可以添加元素到数组的任意位置,强大是因为它除了可以添加元素之外还具有删除和替换元素的功能(这个后面会陆续讲到)。

splice()可以向数组指定位置添加任意数量的元素,需要传入至少3个参数: 起始位置、0(要删除的元素个数)和要添加的元素。

依然接着上面的例子继续:

可以看出,splice()与push()和unshift()一样是直接在原数组上修改的。

二、删

1、pop()

与push()方法配合使用可以构成后进先出的栈,该方法可从数组末尾删除最后一项并返回该项。

接着上例:

2、shift()

与push()方法配合使用可以构成先进先出的队列,该方法可删除数组第一项并返回该项。

继续接着上例:

3、slice()

定义和用法
slice() 方法以新的数组对象,返回数组中被选中的元素。

slice() 方法选择从给定的 start 参数开始的元素,并在给定的 end 参数处结束,但不包括。

注释:slice() 方法不会改变原始数组。

该方法同concat()一样是返回一个新数组,不会影响原数组,只不过slice()是用来裁剪数组的,返回裁剪下来的数组,具体用法如下:

4、splice()

好,继续讲这个“万能”的方法。

上面讲到,该方法在添加数组元素的时候需要传入3个以上参数,而其中第2个参数就是用于指定要删除元素的个数的,那时我们传的是数字0。那么,如果单单只需删除元素,我们就只需给splice()传入两个参数,第1个参数用于指定要删除的第一项的位置,第2个参数用于指定要删除元素的个数。

继续上例~~

从索引项为2的位置开始删除4个元素,所以结果为 [-1, 0, 1, 2]。

三、改

这个其实最灵活的方式就是直接使用splice()这个强大的方法了,其实通过以上对该方法的了解,我们大致就能知道使用该方法修改数组元素的基本原理。

原理很简单,就是向指定位置插入任意数量的元素,且同时删除任意数量的元素。

依然继续上例~~

四、查

indexOf()和lastIndexOf()

这两个方法都接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中,indexOf()从数组的开头(位置0)开始向后查找,lastIndexOf()方法则从数组的末尾开始向前查找。

例如:

当找不到该元素时,返回 -1 ,lastIndexOf()方法同理。

1 数据类型
<script>
2 引用数据类型
object 对象类型
3 number 数字类型
包含所有的数字(整数,浮点数,正数,负数,极大极小数),Infinity(分母为零),NaN(not a number)
4 string 字符串类型
引号包含的任意文本,单双引号都可以

输出展示

2 比较运算符
<script>
/*
1 比较运算符
比较两个值的大小 返回一个布尔值(true 或 false)
> < >= <= == != === !==
== 等于,只判断数值
===全等,绝对等于,即判断数据类型也判断数值
!= == 取反
!== ===取反
console.log(undefined == null);//true 都没有值
console.log(undefined === null);//false 数据类型不同undefined object
console.log(NaN == NaN); //false
console.log(NaN === NaN); //false
console.log(NaN != NaN); //true
console.log(NaN !== NaN); //true
/
</script>
3 逻辑运算符
<script>
/

2 逻辑运算符
连接多个表达式,返回一个布尔值(true 或 false)
&& 逻辑与 并且 所有的表达式都为true,结果才为true,有一个为false结果就为false
|| 逻辑或 或者 所有的表达式都为false,结果才为false,有一个为true结果就为true
! 逻辑非 取反 表达式为true取反就为true,反之亦然
注意: 逻辑与的优先级大于逻辑或
*/
</script>
逻辑运算符演示

输出到控制台的结果

4 赋值运算符
<script>
/*
3 赋值运算符
= 等号右边的值赋值给左边
+= x += y x = x + y 下同
-=
*=
/=
%= 要的是余数
*/
</script>
<script>
x = 7;
y = 3;
console.log(x/=y)
</script>

5 算术运算符
<script>
/*
算术运算符
+ - * / %(取余,取模) ++(自增) --(自减)
%(取余,取模) 应用 判断奇偶数、倍数
++ 相当于自己加1 x++ 相当于 x = x + 1
-- 相当于自己加1 x-- 相当于 x = x - 1
+运算碰到字符串,直接进行字符串拼接,返回string类型
- * / %遇到字符串,都转换成number类型进行计算,如果不能转换成数字,则返回NaN,数据类型未number
true转换1 false转换为0
++ --
前++和后++,对于变量自己来说没有区别都是+1
前++ 先赋值 在加1
后++ 先加1 再赋值
/
</script>
<script>
/
var x = 5;//number
var y = 2;//number
comsole.log(x + y);//7
comsole.log(x - y);//3
comsole.log(x * y);//10
comsole.log(x / y);//2.5
comsole.log(x % y);//1 */

MongoDB 增删改查

学习目标:

MongoDB的使用

环境:

Windows:10
MongoDB:5.0.2

MongoDB的安装:https://blog.csdn.net/qq_44989881/article/details/119604129

学习内容:

MongoDB 数据库的操作

1、 数据库的增删改查
2、集合的增删改查
3、文档的增删改查

使用步骤

数据库

关于database的基础命令

  • 查看当前的数据库:db
  • 查看所有的数据库:show dbs /show databases
  • 切换数据库:use 数据库名
  • 删除当前的数据库:db.dropDatabase()

创建数据库

MongoDB 创建数据库的语法格式如下:

use DATABASE_NAME

如果数据库不存在,则创建数据库,否则切换到指定数据库。

> use vvcat
switched to db vvcat

> db
vvcat

删除数据库

MongoDB 删除数据库的语法格式如下:

db.dropDatabase()

删除当前数据库,默认为 test,使用 db 命令查看当前数据库名。

> db
demo

> show dbs
admin 0.000GB
config 0.000GB
demo 0.000GB
local 0.000GB
vvcat 0.000GB

切换到数据库 demo :

> use demo
switched to db demo

执行删除命令:
注:db表示当前数据库

> db.dropDatabase()
{ “ok” : 1 }

最后,通过 show dbs 命令查看数据库是否删除成功:

> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
vvcat 0.000GB

集合

关于集合的基础命令

  1. 不手动创建集合:
    向不存在的集合中第一次加入数据时,集合会被创建出来

  2. 手动创建集合:

  • db.createCollection(name, options)
    • 参数说明:
      • name: 要创建的集合名称
      • options: 可选参数, 指定有关内存大小及索引的选项
    • options 可以是如下参数:
      • capped:默认值为false表示不设置上限,值为true表示设置上限。
      • size:当capped值为true时,需要指定此参数,表示上限大小,当问你当达到上限时,会将之前的数据覆盖,单位为字节。
      • max :指定固定集合中包含文档的最大数量。

查看集合:show collections
删除集合:db.集合名称.drop()

创建集合

在 vvcat 数据库中创建 vvcat 集合

db.createCollection(“vvcat”)
{ “ok” : 1 }

如果要查看已有集合,可以使用 show collections 或 show tables 命令:

> show collections
vvcat

> show tables
vvcat

创建固定集合 sut,整个集合空间大小 10B,文档最大个数为 5个。

> db.createCollection(“sut”, {capped: true, size:10, max : 5})
{ “ok” : 1 }

> show collections
vvcat
sut

在 MongoDB 中,不需要创建集合。当在插入一些文档时,MongoDB 会自动创建集合。

> db.info.insert({“name” : “vvcat”})
WriteResult({ “nInserted” : 1 })
> show collections
info
sut
vvcat

删除集合

删除集合:db.集合名称.drop()

> db.info.drop()
true
> show collections
vvcat
sut

从结果中可以看出 info 集合已被删除。

文档

关于文档的基础命令

  • 查看当前集合下所有文档:db.info.find()
  • 插入文档:db.COLLECTION_NAME.insert(document)
  • 删除一条文档:db.inventory.deleteOne({})
  • 删除所有文档:db.inventory.deleteMany({})

查找文档

使用 find()查找文档

find()查找文档的语法格式如下:

db.集合名称.find({条件文档})

> db.numbers.find()
{ “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
{ “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
{ “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
{ “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
{ “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995b”), “num” : 1 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995c”), “num” : 2 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995d”), “num” : 3 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995e”), “num” : 4 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995f”), “num” : 5 }

> db.numbers.find({num:3})
{ “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995d”), “num” : 3 }

使用 findOne()查找文档

findOne()查找文档的语法格式如下:

db.集合名称.findOne({条件文档})

查询结果,只返回第一个。

> db.numbers.findOne()
{ “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }

> db.numbers.findOne({num:2})
{ “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }

使用 pretty()将结果格式化

pretty()查找文档的语法格式如下:

db.集合名称.find({条件文档}).pretty()

> db.vvcat.find({name:“vvcat”}).pretty() )
{
“_id” : ObjectId(“6114bbf9117b7214c4a99965”),
“name” : “vvcat”,
“age” : 20,
“gender” : “男”
}
{
“_id” : ObjectId(“1114bbf9217b7214c4a99344”),
“name” : “cat”,
“age” : 10,
“gender” : “男”
}

比较运算符
  • 等于 ( = ) :默认是等于判断,没有运算符
  • 小于 ( < ) :$It (less than)
  • 小于等于 ( <= ):$lte (less than equal)
  • 大于 ( > ) :$gt (greater than)
  • 大于等于 ( >= ):$gte
  • 不等于 ( != ):$ne

查找num小于等于3的文档:

> db.numbers.find({num:{$lte:3}})
{ “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
{ “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
{ “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995b”), “num” : 1 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995c”), “num” : 2 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995d”), “num” : 3 }

查找num小于3的文档:

> db.numbers.find({num:{$lt:3}})
{ “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
{ “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995b”), “num” : 1 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995c”), “num” : 2 }

查询num为2,4的文档

> db.numbers.find({num:{$in:[2,4]}})
{ “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
{ “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995c”), “num” : 2 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995e”), “num” : 4 }

查询num不为2,4的文档

> db.numbers.find({num:{$nin:[2,4]}})
{ “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
{ “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
{ “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995b”), “num” : 1 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995d”), “num” : 3 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995f”), “num” : 5 }

范围运算符

使用 “ i n " , " in"," in""nin” 判断是否在某个范围内

> db.numbers.find({num:{$in:[2,4]}})
{ “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
{ “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995c”), “num” : 2 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995e”), “num” : 4 }

逻辑运算符
  • and:在json中写多个条件即可
  • or:使用$or,值为数组,数组中每个元素为json

查找num大于等于3,且_id等于6114b854117b7214c4a99955的文档。

> db.numbers.find({num:{$gte:3},_id:ObjectId(“6114b854117b7214c4a99955”)})
{ “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }

查找num大于3,或_id等于6114b854117b7214c4a99951的文档。

> db.numbers.find({$or:[{num:{$gt:3}},{_id:ObjectId(“6114b854117b7214c4a99951”)}]})
{ “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
{ “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
{ “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995e”), “num” : 4 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995f”), “num” : 5 }

查找num小于等于2,或_id是6114b8df117b7214c4a9995e,6114b8df117b7214c4a9995f的文档

db.numbers.find({$or:[{num:{$lte:2}},{"_id":{$in:[ObjectId(“6114b8df117b7214c4a9995e”),ObjectId(“6114b8df117b7214c4a9995f”)]}}]})
{ “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
{ “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995b”), “num” : 1 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995c”), “num” : 2 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995e”), “num” : 4 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995f”), “num” : 5 }

查找num小于等于3,或_id等于6114b854117b7214c4a99951的文档,并且num大于0的文档。

> db.numbers.find({KaTeX parse error: Expected '}', got 'EOF' at end of input: or:[{num:{lte:3}},{_id:ObjectId(“6114b854117b7214c4a99951”)}],num:{$gt:0}})
{ “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
{ “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
{ “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995b”), “num” : 1 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995c”), “num” : 2 }
{ “_id” : ObjectId(“6114b8df117b7214c4a9995d”), “num” : 3 }

正则表达式

使用//$regex编写正则表达式

在集合中添加一些文档数据

> db.collection.insertMany([{a:“assasadas”}, {a:“asqwewqrqw”},{a:“ghrferfersd”}, {a:“ddsssff”}])
{
“acknowledged” : true,
“insertedIds” : [
ObjectId(“6114d23f117b7214c4a999d4”),
ObjectId(“6114d23f117b7214c4a999d5”),
ObjectId(“6114d23f117b7214c4a999d6”),
ObjectId(“6114d23f117b7214c4a999d7”)
]
}

查找以 as 开头的文档

> db.collection.find({a:/^as/})
{ “_id” : ObjectId(“6114d23f117b7214c4a999d4”), “a” : “assasadas” }
{ “_id” : ObjectId(“6114d23f117b7214c4a999d5”), “a” : “asqwewqrqw” }

查找以 f 结尾的文档

> db.collection.find({a:{$regex:‘f$’}})
{ “_id” : ObjectId(“6114d23f117b7214c4a999d7”), “a” : “ddsssff” }

查找包含f字母的文档

> db.collection.find({a:{$regex:‘f’}})
{ “_id” : ObjectId(“6114d23f117b7214c4a999d6”), “a” : “ghrferfersd” }
{ “_id” : ObjectId(“6114d23f117b7214c4a999d7”), “a” : “ddsssff” }

limit和skip
  • 方法limit():用于读取指定数量的文档
  • 方法skip():用于跳过指定数量的文档

以下为自定义待查询的数据:

{ “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
{ “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
{ “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
{ “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
{ “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
{ “_id” : ObjectId(“6114b854117b7214c4a99956”), “num” : 6 }
{ “_id” : ObjectId(“6114b854117b7214c4a99957”), “num” : 7 }

limit()查找文档的语法格式如下:

db.集合名称.find().limit(NUMBER)

查询前3条数据

> db.numbers.find().limit(3)
{ “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
{ “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
{ “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }

skip()查找文档的语法格式如下:

db.集合名称.find().skip(NUMBER)

跳过前3条数据,从第4条数据开始查询

> db.numbers.find().skip(3)
{ “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
{ “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
{ “_id” : ObjectId(“6114b854117b7214c4a99956”), “num” : 6 }
{ “_id” : ObjectId(“6114b854117b7214c4a99957”), “num” : 7 }

同时使用

db.集合名称.find().limit(NUMBER).skip(NUMBER)

db.集合名称.find().skip(NUMBER).limit(NUMBER)

先跳过3条数据,然后显示跳过以后的3条数据

> db.numbers.find().skip(3).limit(3)
{ “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
{ “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
{ “_id” : ObjectId(“6114b854117b7214c4a99956”), “num” : 6 }

db.numbers.find().limit(3).skip(3)
{ “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
{ “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
{ “_id” : ObjectId(“6114b854117b7214c4a99956”), “num” : 6 }

自定义查询

以下为自定义待查询的数据:

{ “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
{ “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
{ “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
{ “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
{ “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
{ “_id” : ObjectId(“6114b854117b7214c4a99956”), “num” : 6 }
{ “_id” : ObjectId(“6114b854117b7214c4a99957”), “num” : 7 }

使用$where后面写一个函数,返回满足条件的数据

查询num小于的5的文档

> db.numbers.find({}
… $where:function(){
… return this.num<5;
… }})
{ “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
{ “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
{ “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
{ “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }

投影

在查询到的返回结果中,只选择必要的字段
投影的语法格式如下:

db.集合名称.find({},{字段名称:1,...})

参数为字段与值,值为1表示显示,值为0不显示
特殊:对于_id列默认是显示的,如果不显示需要明确设置为0

查找num大于3的文档,不显示_id,只显示num

> db.numbers.find({num:{$gte:3}},{_id:0})
{ “num” : 3 }
{ “num” : 4 }
{ “num” : 5 }
{ “num” : 6 }
{ “num” : 7 }

查找全部的文档,只显示 _id 不显示 num

> db.numbers.find({},{_id:1,num:0})
{ “_id” : ObjectId(“6114b854117b7214c4a99951”) }
{ “_id” : ObjectId(“6114b854117b7214c4a99952”) }
{ “_id” : ObjectId(“6114b854117b7214c4a99953”) }
{ “_id” : ObjectId(“6114b854117b7214c4a99954”) }
{ “_id” : ObjectId(“6114b854117b7214c4a99955”) }
{ “_id” : ObjectId(“6114b854117b7214c4a99956”) }
{ “_id” : ObjectId(“6114b854117b7214c4a99957”) }

排序

方法sort(),用于对集进行排序
sort()方法的语法格式如下:

db.集合名称.find().sort({字段:1,...})
  • 参数1为升序排列
  • 参数-1为降序排列

降序排列

> db.numbers.find().sort({num:-1})
{ “_id” : ObjectId(“6114b854117b7214c4a99957”), “num” : 7 }
{ “_id” : ObjectId(“6114b854117b7214c4a99956”), “num” : 6 }
{ “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
{ “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
{ “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
{ “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
{ “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }

升序排列

> db.numbers.find().sort({num:1})
{ “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
{ “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
{ “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
{ “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
{ “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
{ “_id” : ObjectId(“6114b854117b7214c4a99956”), “num” : 6 }
{ “_id” : ObjectId(“6114b854117b7214c4a99957”), “num” : 7 }

查找num小于等于3的文档进行降序排序

> db.numbers.find({num:{$lte:3}}).sort({num:-1})
{ “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
{ “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
{ “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }

统计个数

方法count()用于统计结果集中文档条数
count()方法的语法格式如下:

db.集合名称.find({条件}).count()

统计num小于等于3的条数

> db.numbers.find({num:{$lte:3}}).count()
3

db.集合名称.count({条件})

统计num小于等于5且,_id为 ObjectId(“6114b854117b7214c4a99951”) 的条数

> db.numbers.count({num:{$lte:5}, _id:ObjectId(“6114b854117b7214c4a99951”)})
1

消除重复

方法distinct()对数据进行去重

db.集合名称.distinct('去重字段',{条件})

以下为自定义待查询的数据:

{ “_id” : ObjectId(“6114b854117b7214c4a99951”), “num” : 1 }
{ “_id” : ObjectId(“6114b854117b7214c4a99952”), “num” : 2 }
{ “_id” : ObjectId(“6114b854117b7214c4a99953”), “num” : 3 }
{ “_id” : ObjectId(“6114b854117b7214c4a99954”), “num” : 4 }
{ “_id” : ObjectId(“6114b854117b7214c4a99955”), “num” : 5 }
{ “_id” : ObjectId(“6114b854117b7214c4a99956”), “num” : 6 }
{ “_id” : ObjectId(“6114b854117b7214c4a99957”), “num” : 7 }
{ “_id” : ObjectId(“6114b854117b7214c4a999a1”), “num” : 1 }
{ “_id” : ObjectId(“6114b854117b7214c4a999a2”), “num” : 2 }
{ “_id” : ObjectId(“6114b854117b7214c4a999a3”), “num” : 3 }
{ “_id” : ObjectId(“6114b854117b7214c4a999b1”), “num” : 1 }
{ “_id” : ObjectId(“6114b854117b7214c4a999c1”), “num” : 1 }

查看不重复的num

> db.numbers.distinct(‘num’)
[ 1, 2, 3, 4, 5, 6, 7 ]

查看小于5不重复的num

> db.numbers.distinct(‘num’,{num:{$lt:5}})
[ 1, 2, 3, 4 ]

添加文档

以下文档可以存储在 MongoDB 的 vvcat 数据库 的 col 集合中:

使用 insert()添加文档

> db.info.insert({“name”:“vvcat”, “age”:20})
WriteResult({ “nInserted” : 1 })
>db.info.insert({name:“张三”, age:18})
WriteResult({ “nInserted” : 1 })

查看已插入文档:

> db.info.find()
{ “_id” : ObjectId(“61138f22a0b643ed938cc2a6”), “name” : “vvcat”, “age” : 20 }
{ “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “张三”, “age” : 18 }

如果插入重复_id的文档会报错:

> db.info.insert({_id:1,name:“李四”,age:10})
WriteResult({ “nInserted” : 1 })
> db.info.find()
{ “_id” : ObjectId(“61138f22a0b643ed938cc2a6”), “name” : “vvcat”, “age” : 20 }
{ “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “张三”, “age” : 18 }
{ “_id” : 1, “name” : “李四”, “age” : 10 }
db.info.insert({_id:1,name:“李四”,age:10})

> db.info.insert({_id:1,name:“李四”,age:20})
WriteResult({
“nInserted” : 0,
“writeError” : {
“code” : 11000,
“errmsg” : “E11000 duplicate key error collection: vvcat.info index: id dup key: { _id: 1.0 }”
}
})

使用 save()添加文档

保存

  • db.集合名称.save(document)
  • 如果文档的_id已经存在则修改,如果文档的_id不存在则添加

> db.info.save({_id:1,name:“李四”,age:20})
WriteResult({ “nMatched” : 1, “nUpserted” : 0, “nModified” : 1 })
> db.info.find()
{ “_id” : ObjectId(“61138f22a0b643ed938cc2a6”), “name” : “vvcat”, “age” : 20 }
{ “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “张三”, “age” : 18 }
{ “_id” : 1, “name” : “李四”, “age” : 20 }

注:如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。

使用 insertOne()添加文档

> db.collection.insertOne({“a”: 1})
{
“acknowledged” : true,
“insertedId” : ObjectId(“6113c29666d7236471944c09”)
}
> db.collection.find()
{ “_id” : ObjectId(“6113c29666d7236471944c09”), “a” : 1 }

使用 insertMany()插入多条文档

> db.collection.insertMany([{“b”: 2}, {‘c’: 3}])
{
“acknowledged” : true,
“insertedIds” : [
ObjectId(“6113c35866d7236471944c0c”),
ObjectId(“6113c35866d7236471944c0d”)
]
}
> db.collection.find()
{ “_id” : ObjectId(“6113c29666d7236471944c09”), “a” : 1 }
{ “_id” : ObjectId(“6113c35866d7236471944c0c”), “b” : 2 }
{ “_id” : ObjectId(“6113c35866d7236471944c0d”), “c” : 3 }

更新文档

db.集合名称.update(<query>,<update>,{multi:<boolean>})

  • 参数query:查询条件
  • 参数update:更新操作符
  • 参数multi:可选,默认是false,表示只更新找到的第一条记录,值为true表示把满足条件的文档全部更新

使用update替换一条文档

> db.info.find()
{ “_id” : ObjectId(“61138f22a0b643ed938cc2a6”), “name” : “vvcat”, “age” : 20 }
{ “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “张三”, “age” : 18 }
{ “_id” : 1, “name” : “李四”, “age” : 20 }

把{“name” : “李四”, “age” : 20}的数据替换为{name:‘王五’}

> db.info.update({name:‘李四’},{name:‘王五’})
WriteResult({ “nMatched” : 1, “nUpserted” : 0, “nModified” : 1 })
db.info.find()
{ “_id” : ObjectId(“61138f22a0b643ed938cc2a6”), “name” : “vvcat”, “age” : 20 }
{ “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “张三”, “age” : 18 }
{ “_id” : 1, “name” : “王五” }

使用update更新一条文档,把name为张三的数据替换成name为赵六

> db.info.update({name:‘张三’},{$set:{name:‘赵六’}})
WriteResult({ “nMatched” : 1, “nUpserted” : 0, “nModified” : 1 })
> db.info.find()
{ “_id” : ObjectId(“61138f22a0b643ed938cc2a6”), “name” : “vvcat”, “age” : 20 }
{ “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “赵六”, “age” : 18 }
{ “_id” : 1, “name” : “王五” }

更新全部
首先在添加多条文档

> db.info.find()
{ “_id” : ObjectId(“61138f22a0b643ed938cc2a6”), “name” : “vvcat”, “age” : 20 }
{ “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “赵六”, “age” : 18 }
{ “_id” : 1, “name” : “王五” }
{ “_id” : ObjectId(“6113ab66a0b643ed938cc2a8”), “name” : “张三”, “age” : 33 }
{ “_id” : ObjectId(“6113ab67a0b643ed938cc2a9”), “name” : “张三”, “age” : 33 }
{ “_id” : ObjectId(“6113ab68a0b643ed938cc2aa”), “name” : “张三”, “age” : 33 }
{ “_id” : ObjectId(“6113ab68a0b643ed938cc2ab”), “name” : “张三”, “age” : 33 }
{ “_id” : ObjectId(“6113ab69a0b643ed938cc2ac”), “name” : “张三”, “age” : 33 }
{ “_id” : ObjectId(“6113ab69a0b643ed938cc2ad”), “name” : “张三”, “age” : 33 }
{ “_id” : ObjectId(“6113ab6aa0b643ed938cc2ae”), “name” : “张三”, “age” : 33 }

使用{multi:true}参数达到更新多条的目的

> db.info.update({name:‘张三’},{$set:{name:‘vvcat’}},{multi:true})
WriteResult({ “nMatched” : 7, “nUpserted” : 0, “nModified” : 7 })
> db.info.find()
{ “_id” : ObjectId(“61138f22a0b643ed938cc2a6”), “name” : “vvcat”, “age” : 20 }
{ “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “赵六”, “age” : 18 }
{ “_id” : 1, “name” : “王五” }
{ “_id” : ObjectId(“6113ab66a0b643ed938cc2a8”), “name” : “vvcat”, “age” : 33 }
{ “_id” : ObjectId(“6113ab67a0b643ed938cc2a9”), “name” : “vvcat”, “age” : 33 }
{ “_id” : ObjectId(“6113ab68a0b643ed938cc2aa”), “name” : “vvcat”, “age” : 33 }
{ “_id” : ObjectId(“6113ab68a0b643ed938cc2ab”), “name” : “vvcat”, “age” : 33 }
{ “_id” : ObjectId(“6113ab69a0b643ed938cc2ac”), “name” : “vvcat”, “age” : 33 }
{ “_id” : ObjectId(“6113ab69a0b643ed938cc2ad”), “name” : “vvcat”, “age” : 33 }
{ “_id” : ObjectId(“6113ab6aa0b643ed938cc2ae”), “name” : “vvcat”, “age” : 33 }

注意:“multi update only works with $ operators”

删除文档

db.集合名称.removel(<query>,{justOne:<boolean>})

  • 参数query:可选,删除的文档的条件
  • 参数justOne:可选,如果设为true或1,则只删除一条,默认false,表示删除多条

> db.info.find()
{ “_id” : ObjectId(“61138f22a0b643ed938cc2a6”), “name” : “vvcat”, “age” : 20 }
{ “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “赵六”, “age” : 18 }
{ “_id” : 1, “name” : “王五” }
{ “_id” : ObjectId(“6113ab66a0b643ed938cc2a8”), “name” : “vvcat”, “age” : 33 }
{ “_id” : ObjectId(“6113ab67a0b643ed938cc2a9”), “name” : “vvcat”, “age” : 33 }
{ “_id” : ObjectId(“6113ab68a0b643ed938cc2aa”), “name” : “vvcat”, “age” : 33 }
{ “_id” : ObjectId(“6113ab68a0b643ed938cc2ab”), “name” : “vvcat”, “age” : 33 }
{ “_id” : ObjectId(“6113ab69a0b643ed938cc2ac”), “name” : “vvcat”, “age” : 33 }
{ “_id” : ObjectId(“6113ab69a0b643ed938cc2ad”), “name” : “vvcat”, “age” : 33 }
{ “_id” : ObjectId(“6113ab6aa0b643ed938cc2ae”), “name” : “vvcat”, “age” : 33 }

设置{justOne:true}参数,只删除一条文档

> db.info.remove({name:‘vvcat’},{justOne:true})
WriteResult({ “nRemoved” : 1 })
> db.info.find()
{ “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “赵六”, “age” : 18 }
{ “_id” : 1, “name” : “王五” }
{ “_id” : ObjectId(“6113ab66a0b643ed938cc2a8”), “name” : “vvcat”, “age” : 33 }
{ “_id” : ObjectId(“6113ab67a0b643ed938cc2a9”), “name” : “vvcat”, “age” : 33 }
{ “_id” : ObjectId(“6113ab68a0b643ed938cc2aa”), “name” : “vvcat”, “age” : 33 }
{ “_id” : ObjectId(“6113ab68a0b643ed938cc2ab”), “name” : “vvcat”, “age” : 33 }
{ “_id” : ObjectId(“6113ab69a0b643ed938cc2ac”), “name” : “vvcat”, “age” : 33 }
{ “_id” : ObjectId(“6113ab69a0b643ed938cc2ad”), “name” : “vvcat”, “age” : 33 }
{ “_id” : ObjectId(“6113ab6aa0b643ed938cc2ae”), “name” : “vvcat”, “age” : 33 }

删除所有满足条件的数据文档

> db.info.remove({name:‘vvcat’})
WriteResult({ “nRemoved” : 7 })
> db.info.find()
{ “_id” : ObjectId(“6113a18ba0b643ed938cc2a7”), “name” : “赵六”, “age” : 18 }
{ “_id” : 1, “name” : “王五” }

如果你想删除集合中所有的数据,可以使用以下方式:

> db.info.remove({})
WriteResult({ “nRemoved” : 2 })
> db.collection.find()

总结:

  1. MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。

  2. 在 MongoDB 中,集合只有在内容插入后才会创建,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

  3. 创建日期语句如下:参数的格式为 YYYY-MM-DD new Date(‘2021-08-11’)

    > new Date(‘2021-08-11’)
    ISODate(“2021-08-11T00:00:00Z”)

  4. 每个文档都有一个属性,为_id,保证每个文档的唯一性

  5. 可以自己去设置_id插入文档,如果没有提供,那么 MongoDB 为每个文档提供了一个独特的_id,类型为objectID

  6. objectID是一个12字节的十六进制数:

    • 前4个字节为当前时间戳
    • 接下来3个字节的机器ID
    • 接下来的2个字节中 MongoDB 的服务进程id
    • 最后3个字节是简单的增量值
  7. 文档支持的数据类型

    • Object ID:文档ID
    • String:字符串,最常用,必须是有效的UTF-8
    • Boolean:存储一个布尔值,true 或 false
    • Integer:整数可以是32位或64位,取决于操作系统
    • Double:存储浮点值
    • Arrays:数组或列表,多个值存储到一个键
    • Object:用于嵌入式的文档,即一个值为一个文档
    • Null:存储Null值
    • Timestamp:时间戳,表示从1970-1-1到现在的总秒数
    • Data:存储当前日期或时间的UNIX时间格式
  8. 在插入文档时,MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段。

  9. 插入文档也可以使用 db.col.save(document) 命令。

    • db.collection.insert({}) 插入数据,’_id’ 存在就报错
    • db.collection.save({}) 插入数据,’_id’ 存在会更新
  10. MongoDB删除文档

    • 1.默认情况会删除所有满足条件的数据。
    • 2.{justOne:true}能达到只删除一条的效果

以上是关于js常用增删改查方法/js比较运算符 逻辑运算符 赋值运算符 算术运算符的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB的增删改查

MongoDB 增删改查

js中的增删改查——数组对象,接口

一文带你吃透js处理树状结构数据的增删改查

vue的增删改查

js 数组的增删改查