mongodb建立索引

索引

index(索引)建索引是为了提高查询速度,要根据实际业务建立索引

	const BaseModel=require('../models/base')
	const mongoose=require('mongoose')
	const {Schema}=mongoose
	const {ObjectId}=Schema
	const ReplySchema=new Schema({
		content:{type:String,required:true},
		topic_id:{type:ObjectId,required:true},
		author_id:{type:ObjectId,required:true},
		reply_id:{type:ObjectId},

		create_at:{type:Date,default:Date.now},
		update_at:{type:Date,default:Date.now},

		ups:{type:Array,default:[]}
	})

	ReplySchema.plugin(BaseModel)
	ReplySchema.index({topic_id:1,author_id:1});//1是正序,-1是倒序
	ReplySchema.index({topic_id:1,create_at:1})

executionStats:MongoDB运行查询优化器选择获胜的计划,执行计划,完成并返回成功,统计描述的胜利计划的执行

db.person.find({name:'test'+1000}).explain('executionStats')

二者相差462毫秒(我服务器太差劲!哈哈哈)

常用索引命令

  1. 建立索引
# 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可
db.col.createIndex({"字段名称":1}) 
  1. 查询索引
db.col.getIndexes()
  1. 查看集合索引大小
db.col.totalIndexSize()
  1. 删除集合所有索引
db.col.dropIndexes()
  1. 删除集合指定索引
db.col.dropIndex("索引名称")

常用查询命令
  1. 查询用户列表;过滤0表示不返回,1表示返回,sort排序 正序or倒序
 UserModel.find({username: {'$ne': 'admin'}},{password:0,__v:0}).sort({"_id": -1})
  1. 按日期查询
db.getCollection('projects').find({ "createdAt" : { "$gte" : ISODate("2018-01-00T00:00:00Z")  , "$lt" : ISODate("2018-01-30T00:00:00Z") } })
##ID
db.getCollection('userdashboards').find({'_id':ObjectId("59fa7515b7cc5588cadffad9")})

修改数据库名

db.copyDatabase('old_name', 'new_name'); 
use old_name 
db.dropDatabase(); //不要忘了加分号

Linux的配置文件

/etc/mongod.conf

开机自启动

$ sudo systemctl start mongod
$ sudo systemctl status mongod
$ sudo systemctl enable mongod

MongoDB备份

mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径 

mongorestore还原数据库

mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径

导出数据

sudo mongoexport --db 数据库名称 -c 表名 --out newdbexport.json
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值