MongoDB个人简单总结

  当同一个变量被连续插入两次会出现id相同的异常,但是同样内容的两个变量同时插入不会有问题,可能是同一个变量同一个地址生成id相同,导致异常。

  默认登陆不需要用户名密码认证,需要密码认证登陆需要在admin数据库user集合添加用户,并且以需要认证的方式启动,mongodb --auth,如果初始没有添加用户以该方式启动依然可以随意登陆,因为如果不这样就会无法登陆。
  添加超级用户后直接访问别的数据(mongo dbbaes),依然无法访问,超级用户可以登录admin后再访问别的任何数据库,而无法直接访问别的数据库,可以用超级用户给其他数据库添加用户,方式一样,需要先进入对应数据库。
  每条记录会有一个主键_id,可以自己设置可以默认系统的,不能重复。
  程序插入记录时,同一个对象如果被同一次内插入了两次,则会报错,主键重复,但是内容可以重复。
  非认证方式启动,用不用用户名密码都可以访问,不能用错的。
  另外非正常情况下链接不报错,但执行具体的操作就会报错,具体原因没有深查。
  认证方式启动必须用户名密码登陆。

  mongodb在某个不正当操作下会导致操作某个集合报 SyntaxError: Unexpected token ILLEGAL 的错误,无论查询删除皆是如此,但是用js代码的方式可以解决; 例如 var c =db.getCollection(‘player’);c.drop();

mongodb设计模式:
  优先考虑内嵌:比如一个人有几个手机号,这种对应数据少的情况下用内嵌足以;比如一个人有几个手机号,这种对应数据少的情况下用内嵌足以;
  后考虑引用:但是如果是一个明星对应几万条留言,则考虑引用,因为内嵌在一个文档里会超过16M限制。这个时候你可以考虑使用引用的方式,在主表里存储一个id值,指向另一个表中的 id 值。
  使用引用要注意的就是:从性能上讲,一般我们可能需要两次以上才能把需要的数据取回来。更加重要的是:需要把数据存放到两个集合里,但是目前为止MongoDB并不支持跨表的事务性,所以对于强事务的应用场景要谨慎使用。

mongodb索引:
  mongodb有一个TTL索引,定义在date类型或者数组中有date类型的单字段上,可以用来删除过期数据。

  mongodb集合添加一个字段 db.000001_DAY.update({}, {$set: {sid: 4}}, {multi: 1})

linux安装mongodb
  curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz 下载
  tar -zxvf mongodb-linux-x86_64-3.0.6.tgz 解压
  mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb 移动到指定目录
  export PATH=/data/mongodb/mongodb-linux-x86_64-3.0.6/bin:$PATH 添加path路径
  mkdir -p /data/db 创建mongodb默认的启动数据库路径

  数据库用户角色:read、readWrite;
  数据库管理角色:dbAdmin、dbOwner、userAdmin;
  集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  备份恢复角色:backup、restore;
  所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  超级用户角色:root
  // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
  内部角色:__system

原文地址:https://www.cnblogs.com/Qsunshine/p/9717296.html