Mongodb
- 默认索引 _id
createIndex({key:value},options) 创建索引方法
- 单键索引:单键索引对于排序和没有影响,因为mongodb可以通过两个方向来遍历文档
- 复合索引
复合索引排序时,例如{userId:1,score:-1} 那么排序的方式是以userId先排序,在每个userId内,然后再根据score排序 - 多键索引
当创建索引时,字段是一个数组,那么mongodb会自动创建一个多键索引,无需手动,排序和复合索引一样 例如:
name:[{a:'xx'},{a:'gg'}] 可以使用嵌入式排序,即对象内部字段排序
排序:{name.a:1}
- 地理索引
- 文本索引
- hash索引
- TL 索引
分析索引性能:
cursor=db.collection.find()
cursor.explain("executionStats") 返回查询计划及信息
cursor.hint(index) 测试索引
索引options属性:
background:可选 创建索引时,并不阻塞其他数据库操作 默认为false
unique :可选 索引是否为唯一值 默认为false
name : 可选 索引名称
partialFilterExpression: 可选,是否仅使用文档筛选器 例如$exist $gt等
sparse:可选 使用时,这些索引只会返回文档的制定字段,即如果文档无索引,就会跳过。会减少占用空间,但是在某些情况下会出现不一样的表现,例如排序
单键索引
createIndex({name:1},options);
也可以使用嵌入式创建索引,取对象中的一个属性创建索引
createIndex({xx.yy:1},options)
复合索引
db.collection.createIndex( { <field1>: <type>, <field2>: <type2>, ... } )
复合索引和单键索引差不多,只是在排序上有很大区别,在使用sort()时,是按照书写顺序来先后排序的
sort({a:1,b:1}) 和sort({b:1,a:1}) 是完全不一样的排序方式
多键索引
为了索引一个储存数组的键,MongoDB对数组中的每个元素都添加索引项
创建多键索引时候,不能有两个数组,否则会报 cannot index parallel arrays [b] [a]
分片键
你不能指定多键索引为分片键
哈希键
hash键不能用于多键索引
多键索引界限
文本索引
一个集合最多只能创建 一个 文本 索引
db.reviews.createIndex( { comments: "text" } )
Git
在删除远程分支后,在本地使用命令 git branch -a 查看时,任然存在分支
git remote show origin //可以使用该命令查看远程分支情况
解决办法:
git remote prune origin //刷新本地仓库与远程仓库的保持这些改动的同步
Linux 命令
dpkg
是一个Debian的一个命令行工具,它可以用来安装、删除、构建和管理Debian的软件包
dpkg -i file.deb #安装包
dkpg --unpack filde.deb #解开软件包
dpkg --configure file.deb #配置包
sudo rm /var/lib/dpkg/lock #dkpg一次只能运行一个,会加锁,如果想清除锁
dpkg -r xx / dpkg remove xx #删除包
dkpg -P xx.deb #清除安装包加配置 dpkg remove xx.deb只是清楚安装,不清楚配置
dkpg -l #查看所有的安装包
dpkg -l name #显示当前包的详细信息
dkpg -L name:#显示于软件包关联的文件
dkpg -c file.deb #显示软件包内文件列表
dpkg -S keyword #关键词搜索
dpkg和apt-get 的区别
apt-get: 用于在网络下下载资源,且会解决包的依赖问题
dpkg:用于安装本地的*.deb包,但是不会解决依赖问题,且dpkg绕过apt包管理数据库对软件包进行操作,所以你用dpkg安装过的软件包用apt可以再安装一遍,系统不知道之前安装过了,将会覆盖之前dpkg的安装