【mongodb】windows下的基础命令

开启Mongodb:
(以管理员身份在cmd中输入)
net start MongoDB
进入mongodb shell:
mongo 使用默认端口
mongo --port 28015 使用端口28015
退出shell:
exit
或者按Ctrl+C


基础指令

查询当前使用的数据库
db
显示所有数据库:
show dbs;
显示所有的集合:
show collections
使用数据库:
use <database>
创建数据库:
use <新数据库名>
单纯的use <新数据库名>之后,不能通过show dbs来看到新建的数据库,必须要在数据库中再创建collection之后才能通过show dbs看到该新建的数据库

删除数据库:
首先切换到该数据库,然后再删除:
use delete_database
db.dropDatabase()
删除集合:
db.collection_name.drop()

创建普通集合:
db.createCollection('new_collection');
创建capped集合:
db.createCollection("collection_name", {size: 20, capped: true, max: 100})
size:限制集合使用的大小,默认无上限
max:限制集合中document的条数,默认无上限
size的优先级比max更高

查看当前集合的document条数:
db.collection_name.count()
查看集合数据的大小:
db.collection_name.dataSize()
集合重命名:
db.collection_name.renameCollection("new_collection_name")

写入文档:
db.collection_name.insert({"user":"clientA"}) 如果集合中已有该条数据则报错
db.collection_name.save({"user":"clientA"}) 如果集合中已有该数据则刷新



查询

结构化显示查询结果:
db.collection_name.find().pretty()

查询的括号中只能设置两个字典参数,第一个是查询的条件,第二是查询返回的字段,例如:
db.collection_name.find({"name":"Tom"}, {"name":1, "age":1})
表示查询name字段为Tom的数据,同时只显示name和age这两个字段

条件查询

db.getCollection('aws_instance_billings').find({'UsageStartDate': '2019-06-01 00:00:00', 'UsageStartDate': '2019-07-01 00:00:00'})

或者:

db.aws_instance_billings.find({'UsageStartDate': '2019-06-01 00:00:00', 'UsageStartDate': '2019-07-01 00:00:00'})


或查询使用$or带一个字典数组

db.collection_name.find({$or:[{name:'Tom'},{name:'Jack'}]})

$or两边加不加字符串符号都可以

大于、大于等于: $gt $gte
小于、小于等于:$lt $lte

db.collection_name.find({UsageQuantity:{$gte:0.5, $lt:1}})

不等于:$ne

db.collection_name.find({UsageQuantity:{$ne:1}})

查询存在某个字段的document

db.collection_name.find({'fieldA':{$exists:true}})

包含$in命令

db.aws_instance_billings.find({'UsageStartDate':{$in:{'2019-06-01 00:00:00', '2019-07-01 00:00:00'}}})

不包含$nin命令

db.aws_instance_billings.find({'UsageStartDate':{$nin:{'2019-06-01 00:00:00', '2019-07-01 00:00:00'}}})

以上命令都可以取反:$not

db.collection_name.find({'fieldA':{$not:{$exists:true}}})

空值查询null

db.collection_name.find({'name':null})

查询name这个字段为空值的document

嵌套查询
假设我们有如下结构的数据,需要查询内层的信息:

{
	'fieldA': 123,
	'region_data': {
		'ap-south-1':{
			'total_cpu':23,
			'other': 'india'
		}
	}
db.collection_name.find({'region_data.ap-south-1.total_cpu':23})


数组查询

db.collection_name.find({'favorite-number.0':6})

查询favorite-number这个字段(该字段为一个数组)下第一个元素值为6的document

高级查询$where
查询age>18的数据,以下命令可以得到相同的结果:
db.collection_name.find({age:{$gt:18}})
db.collection_name.find({$where: {"this.age>18"}})
db.collection_name.find("this.age>18")
注意此处第三个查询语句db.collection_name.find("this.age>18")没有花括号
同时第三个查询语句不支持嵌套查询,例如对于如下结构的数据:

{
	'fieldA': 123,
	'region_data': {
		'ap-south-1':{
			'total_cpu':23,
			'other': 'india'
		}
	}

不支持如下的嵌套查询:

db.collection_name.find("this.region_data.ap-south-1.total_cpu>23")

查询辅助

limit():限制查询返回的document条数
db.collection_name.find().limit(2)
只返回查询结果的前两条

skip():跳过前面几条数据
db.collection_name.find().skip(3).limit(5)
跳过前三条数据,总共显示5条数据

sort():查询结果排序
db.collection_name.find().sort({age: 1})
对年龄升序处理再返回结果
db.collection_name.find().sort({age: -1})
对年龄降序处理再返回结果

按照存入数据库的顺序显示:

db.getCollection("aws_accounts").find().sort({$natural:-1}).limit(200)

按照存入数据库的顺序逆序显示:

db.getCollection("aws_accounts").find().sort({$natural:-1}).limit(200)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值