1. Mongodb的更新方式有?
MongoDB 通过 update 函数与 save 函数来更新集合中的文档。
2. Mongodb的update更新?
update() 函数用于更新已存在的文档。
语法格式: db.集合名称.update( , , upsert:boolean, multi:boolean)
参数说明:
query:update 的查询条件,类似 sqlupdate 更新语法内 where 后面的内容。
update:update 的对象和一些更新的操作符等,也可以理解为 sqlupdate 查询内 set 后面的。
upsert: 可选,这个参数的意思是,如果不存在 update 的记录,是否插入这个 document, true 为插入,默认是 false,不插入。
multi : 可选,mongodb 默认是 false,只更新找到的第一条记录,如果这个参数为 true, 就把按条件查出来多条记录全部更新
在 MongoDB 中的 update 是有两种更新方式,一种是覆盖更新,一种是表达式更新。 覆盖更新:顾名思义,就是通过某条件,将新文档覆盖原有文档。 表达式更新:这种更新方式是通过表达式来实现复杂更新操作,如:字段更新、数值计 算、数组操作、字段名修改等
3. Mongodb的更新操作符有哪些 都是什么意思?
KaTeX parse error: Expected '}', got 'EOF' at end of input: inc 用法:{inc:{field:value}} 作用:对一个数字字段的某个 field 增加 value
KaTeX parse error: Expected '}', got 'EOF' at end of input: set 用法:{set:{field:value}} 作用:把文档中某个字段 field 的值设为 value,如果 field 不存在,则增加新的字段并 赋值为 value。
KaTeX parse error: Expected '}', got 'EOF' at end of input: unset 用法:{unset:{field:1}} 作用:删除某个字段 field
KaTeX parse error: Expected '}', got 'EOF' at end of input: push 用法:{push:{field:value}} 作用:把 value 追加到 field 里。注:field 只能是数组类型,如果 field 不存在,会自动 插入一个数组类型
KaTeX parse error: Expected '}', got 'EOF' at end of input: addToSet 用法:{addToSet:{field:value}} 作用:加一个值到数组内,而且只有当这个值在数组中不存在时才增加
KaTeX parse error: Expected '}', got 'EOF' at end of input: …用法:删除数组内第一个值: {pop:{field:-1}}、删除数组内最后一个值: {$pop:{field:1}} 作用:用于删除数组内的一个值
KaTeX parse error: Expected '}', got 'EOF' at end of input: pull 用法:{pull:{field:_value}} 作用:从数组 field 内删除一个等于_value 的值
KaTeX parse error: Expected '}', got 'EOF' at end of input: pullAll 用法:{pullAll:value_array} 作用:用法同$pull 一样,可以一次性删除数组内的多个值
KaTeX parse error: Expected '}', got 'EOF' at end of input: rename 用法:{rename:{old_field_name:new_field_name}} 作用:对字段进行重命名。底层实现是先删除 old_field 字段,再创建 new_field 字段
4. Mongodb的save()更新?
save()函数的作用是保存文档,如果文档存在则覆盖,如果文档不存在则新增。save() 函数对文档是否存在的唯一判断标准是"_id"系统唯一字段是否匹配。所以使用 save()函数实 现更新操作,则必须提供"_id"字段数据
5. Mongodb删除文档的三种方式?
remove函数, remove()函数并不会真正的释放存储空间,需要使用 db.repairDatabase()函数来释放存储空间。
deleteOne 函数,删除单个文档
deleteMany函数,删除多个文档
6. Mongodb如何实对文档的查询,请举例说明?
MongoDB 是通过 findOne()和 find()函数来实现文档查询的。
7. Mongodb中的投影操作指的是?
代表查询结果的投影字段名。即查询结果需要返回哪些字段或不需要 返回哪些字段
8. 条件运算符有哪些 分别什么意思?
8.1and和or如何联合使用?
查询集合中title为test6以及size等于500或者size小于400的文档:
9. 每页显示5条查看第5页的数据如何实现?
在 MongoDB 中,使用函数 limit()和 skip()来实现分页数据查询
db.dev.find({条件}).skip(20).limit(5)
10. 如何实现排序,两个条件如何排序 如年龄一致按照分数排序?
在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序 的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列
db.dev.find({条件}).sort({age:1,score:1})
11. 如何创建索引?
MongoDB 中使用 createIndex 或 ensureIndex 函数来创建索引。ensureIndex 函数是 1.8 版本后增加的创建索引函数,是官方推荐使用的函数。createIndex 函数在部分高版本 MongoDB 中已被移除,不推荐使用
12. 如何查看索引?
在 MongoDB 中使用 getIndexes()函数查看集合的索引信息
在 MongoDB 中使用 getIndexKeys()函数查看集合的索引键
在 MongoDB 中使用 getIndexSpecs()函数查看索引详情
在 MongoDB 中使用 totalIndexSize()函数查看集合中索引的大小
13. 删除索引有几种方式,分别举例说明?
在 MongoDB 中使用 dropIndex()函数删除指定的索引
在 MongoDB 中使用 dropIndexes()函数删除集合中的所有自建索引。此函数只删除自建 索引,不会删除 MongoDB 创建的_id 索引
14. 索引类型有哪些,有何作用?
MongoDB 支持多种类型的索引,包括单字段索引、复合索引、多 key 索引、文本索引 等,每种类型的索引有不同的使用场合
单字段索引:其能加速对字段的各种查询请求
交叉索引:为一个集合的多个字段分别建立索引,在查询的时候通过多个字段作为查询条件,这种情况称为交叉索引。 交叉索引的查询效率较低,在使用时,当查询使用到多个字段的时候,尽量使用复合索引,而不是交叉索引
复合索引:是 SingleFieldIndex 的升级版本,它针对多个字段联合创建索引,先按第一个 字段排序,第一个字段相同的文档按第二个字段排序,依次类推。复合索引能满足的查询场景比单字段索引更丰富,不光能满足多个字段组合起来的查询,也能满足所以能匹配符合索引前缀的查询
多key索引:当索引的字段为数组时,创建出的索引称为多 key 索引,多 key 索引会为数组的每个元素建立一条索引
唯一索引 (uniqueindex):保证索引对应的字段不会出现相同的值,比如_id 索引就是唯一索引
部分索引只为集合中那些满足指定的筛选条件的文档创建索引
15. 使用索引需要注意什么?
索引虽然加快了查询速度,但是索引也是有代价的,索引文件本身要消耗存储空间,同时索引会加重插入、删除和修改记录时的负担,另外,数据库在运行时也要消耗资源维护索引,因此索引并不是越多越好
16. 索引限制指的是?
1额外开销
每个索引占据一定的存储空间,在进行插入,更新和删除操作时也需要对索引进行操作。 所以,如果你很少对集合进行读取操作,建议不使用索引。
2内存使用
由于索引是存储在内存(RAM)中,你应该确保该索引的大小不超过内存的限制。 如果索引的大小大于内存的限制,MongoDB 会删除一些索引,这将导致性能下降。
3查询限制
索引不能被以下的查询使用: 正则表达式(最左匹配除外)及非操作符,如
n
i
n
,
nin,
nin,not, 等。 算术运算符,如 $mod, 等。 所以,检测你的语句是否使用索引是一个好的习惯,可以用 explain 来查看。
4最大范围
集合中索引不能超过 64 个 索引名的长度不能超过 128 个字符 一个复合索引最多可以有 31 个字段