js常用增删改查方法/js比较运算符 逻辑运算符 赋值运算符 算术运算符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js常用增删改查方法/js比较运算符 逻辑运算符 赋值运算符 算术运算符相关的知识,希望对你有一定的参考价值。
参考技术Ajs数组遍历某个值求和
一、增
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 增删改查
学习目标:
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
集合
关于集合的基础命令
-
不手动创建集合:
向不存在的集合中第一次加入数据时,集合会被创建出来 -
手动创建集合:
- 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()
总结:
-
MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。
-
在 MongoDB 中,集合只有在内容插入后才会创建,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。
-
创建日期语句如下:参数的格式为 YYYY-MM-DD new Date(‘2021-08-11’)
> new Date(‘2021-08-11’)
ISODate(“2021-08-11T00:00:00Z”) -
每个文档都有一个属性,为_id,保证每个文档的唯一性
-
可以自己去设置_id插入文档,如果没有提供,那么 MongoDB 为每个文档提供了一个独特的_id,类型为objectID
-
objectID是一个12字节的十六进制数:
- 前4个字节为当前时间戳
- 接下来3个字节的机器ID
- 接下来的2个字节中 MongoDB 的服务进程id
- 最后3个字节是简单的增量值
-
文档支持的数据类型
- Object ID:文档ID
- String:字符串,最常用,必须是有效的UTF-8
- Boolean:存储一个布尔值,true 或 false
- Integer:整数可以是32位或64位,取决于操作系统
- Double:存储浮点值
- Arrays:数组或列表,多个值存储到一个键
- Object:用于嵌入式的文档,即一个值为一个文档
- Null:存储Null值
- Timestamp:时间戳,表示从1970-1-1到现在的总秒数
- Data:存储当前日期或时间的UNIX时间格式
-
在插入文档时,MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段。
-
插入文档也可以使用 db.col.save(document) 命令。
- db.collection.insert({}) 插入数据,’_id’ 存在就报错
- db.collection.save({}) 插入数据,’_id’ 存在会更新
-
MongoDB删除文档
- 1.默认情况会删除所有满足条件的数据。
- 2.{justOne:true}能达到只删除一条的效果
以上是关于js常用增删改查方法/js比较运算符 逻辑运算符 赋值运算符 算术运算符的主要内容,如果未能解决你的问题,请参考以下文章