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
下一篇: C语言结构体和链表