mongo(2)

浅浅的花香味﹌ 2022-06-13 03:29 354阅读 0赞

mongodb学习记录(二)

更新操作(续)

更新数据 :

  1. 注意:mongodb使用update默认更新第一条数据
  2. 注释:如果后边的参数为true则表示,如果需要更新的记录不存在,则插入一条新的
  3. 语法:db.[collection].update({"key":"value"},{$set:{"key":"value"}},true|false)
  4. 例子:把name为“dozx”的数据的name字段值改为“ketty”,如果不存在则插入一条name为“ketty”的数据
  5. db.csbn.update({"name":"dozx"},{$set:{"name":"ketty"}},true)
  6. 注释:后边的第一个boolean参数跟上边一样,第二个boolean类型的参数表示更新匹配到的所有记录
  7. 语法:db.[collection].update({"key":"value"},{$set:{"key":"value"}},true|falsetrue|false)
  8. 例子:更新所有name为“dozx”的数据
  9. db.csbn.update({"name":"dozx"},{$set:{"name":"ketty"}},false,true)

删除操作

删除数据:

  1. 注释:删除数据与条件匹配到的数据
  2. 语法:db.[collection].remove({key:value})
  3. 例子:删除所有name为“dozx”的数据
  4. db.[collection].remove({"name":"dozx"})

删除表:
注释:删除某个文档(类似于mysql中的表)
语法:db.[collection].drop()

  1. 例子:删除名为“csbn”的表
  2. db.csbn.drop()

mongodb索引

索引

查询索引 :

  1. 注释:查询某个文档
  2. 语法:db.[collection].getIndexes()
  3. 例子:查找csbn中的索引
  4. db.csbn.getIndexes()

创建索引 :

  1. 注释:创建一个索引。1为指定按升序创建索引,如果你想按降序来创建索引指定为-1即可。
  2. 语法:db.[collection].ensureIndex({key:1|-1})
  3. 例子:在csbn中以“name”为关键字创建一个按升序的索引
  4. db.csbn.ensureIndex({name:1})

使用多个字段创建索引:

  1. 注释:使用多个字段创建索引(复合索引)
  2. 语法:db.[collection].ensureIndex({key1:1|-1,key2:1|-1})
  3. 例子:在csbn中使用name,age两个字段创建索引
  4. db.csbn.ensureIndex({name:1,age:-1})

13caGnN.png

实例:

  1. 在后台创建索引:
  2. db.values.ensureIndex({open: 1, close: 1}, {background: true})

通过在创建索引时加background:true 的选项,让创建

多建索引:

  1. 例如db.[collection].insert({x:[1,2,3,4,5]})
  2. x即为一个多件索引。即某字段的值为一个数组的时候,为该字段创建一个索引即为多键索引

复合索引 :

  1. 注释:需要根据多个条件查询时,需要复合索引.(1:表示按照按照升序创建索引。-1表示按照降序创建创建索引)
  2. 语法:db.[collection].ensureIndex({key1: 1 | -1, key2: 1 | -1})
  3. 例子:以x,y两个字段为索引创建复合索引
  4. db.csbn.ensureIndex({x:1,y:1})

过期索引 :

  1. 释义:在一段时间后会过期的索引。在索引过期后,相应的数据会删除.
  2. 应用场景:存储一些在一段时间之后会失效的数据,比如用户的登录信息,存储日志。
  3. 注释:expireAfterSeconds参数表示经过多长时间索引过期,单位为秒。
  4. 语法:db.[collection].ensureIndex({key1:1|-1},{expireAfterSeconds:integer})
  5. 例子:为csbn表以x字段为索引,过期时间设为10
  6. db.csbn.ensureIndex({x:1},{expireAfterSeconds:10})
  7. 注意:1.存储在过期索引字段的值必须是指定的时间类型(必须是ISODate类型,或者是ISODate数组,否则不能被自 动删除)
  8. 2.如果指定了ISODate数组,则按照最小的时间进行删除
  9. 3.过起索引不能是复合索引。
  10. 4.删除时间不是精确
  11. 说明:删除过程是由后台程序每60秒跑一次,而且删除也需要一些时间,所以存在误差

lZ7pLmQ.png

图中标注注释:

标注一:创建一个过期索引,过期时间为30秒。
标注二:插入一条数据,key为“x”,value为“当前时间”(使用new Date()函数)。
标注三:刚插入后查询数据,可以查询出来。
标注四:过30秒后再次查询,刚插入的数据已经被自动删除。

菜鸟一枚,大神勿喷。

发表评论

表情:
评论列表 (有 0 条评论,354人围观)

还没有评论,来说两句吧...

相关阅读

    相关 mongo

    bash查询 不用创建库,不用创建表,直接插入就都有了! 数据库 查询`show dbs` 创建`use dbName` 删除`` \`\` 集合

    相关 mongo

    MongoDB 学习记录(一) 注释: \[db name\] : 数据库名 \[collection\] : 相当于关系型数据库中的表(table) 数据插

    相关 docker 安装mongo:3.2

    MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行