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
最新文章
- “LC.exe”错误
- JDBC的简单使用
- $(window).height()获取到的高度不对
- sprintf_s的教训
- MFC关闭子窗口 如何把父窗口也一起关闭
- Match:Milking Grid(二维KMP算法)(POJ 2185)
- nokogiri如何使用
- 几种不同的获取url地址的方法
- codeforces C. Triangle
- Google Play和基于Feature的过滤 —— Feature 参考手册
- JDK安装与配置详细图文教程
- BZOJ_1030_[JSOI2007]文本生成器_AC自动机+DP
- 【LUOGU???】WD与积木 NTT
- Jupyter Notebook不能在系统命令行里全局启动
- C# 当中 LINQ 的常规用法(Lambda 方式)
- mockjs使用
- win(64位)环境下oracle11g的安装方法
- AtCoder Regular Contest 077 C - pushpush
- Jenkins安装部署(二)
- Python地理位置信息库geopy的使用(一):基本使用
热门文章
- PHP 中move_uploaded_file 上传中文文件名失败
- Vue.js 学习笔记 第4章 v-bind 及 class与style绑定
- iOS屏幕适配 支持新手机 iPhone XR iPhone XS 超简单
- 数据库【mongodb】之pymongo
- @Autowired注解警告Field injection is not recommended
- MIP 2016年终总结
- 移动设备分辨率(终于弄懂了为什么移动端设计稿总是640px和750px)
- Vue.js-03:第三章 - 事件修饰符的使用
- Sentinel 流程分析
- [翻译] EF Core 概述