【MongoDB】MongoDB笔记—常用命令

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

mongodb是nosql,存储进去数据库的是一个个bson(类似json)文档。对应mysql表里面的一行。而mongodb的collection,可以类比mysql的表,是文档的集合。

关于MongoDB的介绍就不多说了,大家可以尽情地上网查资料,下面是我学习mongoDB时整理的一些常用命令,平时忘记了的话方便查询,这里会结合一些具体的实例来说明,比如使用集合的名称为users,username为smith、jones等,大家在实际的操作中要适当变换。


安装完MongoDB后,切换到路径:/data/services/bt_svc_mongodb-1.0.0.1/bin


启动:./mongo


查看帮助:
1、列出操作数据库对象的常用方法:
db.help();
2、列出操作集合的常用方法:
db.foo.help();


切换数据库(无需新建):
use tutorial


增加一条记录(理解为文档),并把它存到users集合里:
db.users.insert({username:"smith"})
db.users.save({username:"smith"})


简单查看(全部记录):
db.users.find()


增加一条记录:
db.users.save({username:"jones"})


查看文档条数:
db.users.count()


带条件查询:
db.users.find({username:"smith"})
db.users.find({username:"jones"})
db.numbers.find({num:500})
特殊操作符$gt和$lt分别表示大于和小于来执行范围查询:
db.numbers.find({num:{"$gt":199995}})
db.numbers.find({num:{"$lt":199995}})
db.numbers.find({num:{"$gt":20,"$lt":25}})


更新文档:参数一指明要更新的文档,参数二定义被选中的文档应该如何更新

db.users.update({username:"jones"},{$set:{country:"China"}})
db.users.update({username:"smith"}, 
{$set:{favorites:
      {
cities:['Chicago','Cheyenne'],
movies:['Casablanca','The String']
      }
  }
})
db.users.update({username:'jones'},
{'$set':{favorites:
{
movies:['Casablanca',"Rocky"]
}
}
})


根据内嵌对象的属性查询:
db.users.find({"favorites.movies":"Casablanca"})


撤销更改:
db.users.update({username:"jones"},{$unset:{country:1}})


使用$push和$addToSet操作符向数组中添加一个元素(后者会保持唯一性,防止重复添加):参数一查询选择器,参数而使用$addToSet操作符向数组中添加一个元素,参数四说明这是一个多项更新,默认只会应用于查询选择器匹配到的第一个文档,若想被应用于匹配到的所有文档,需要显式声明
db.users.update({"favorites.movies":"Casablanca"},
{$addToSet:{"favorites.movies":"The Maltese Falcon"}},
false,
true
)


删除集合(整个数据表):

db.users.remove()


删除集合文档的一个子集:remove()操作不会删除集合,只是从集合中删除文档

db.users.remove({"favorites.cities":"Cheyenne"})


删除集合以及它的全部索引:
db.users.drop()


创建索引并查询:
1、使用JavaScript语言轻松创建200000条文档/记录:
for(i=0;i<200000;i++){
db.numbers.save({num:i});
}
2、插入后查看文档数量:
db.numbers.count()
3、查看详细内容:
db.numbers.find()


explain()用来描述查询路径:
db.numbers.find({num:{"$gt":199995}}).explain()


通过ensureIndex()为num键创建一个索引:{num:1}说明为numbers集合中所有文档的num键构建一个升序索引
db.numbers.ensureIndex({num:1})
调用getIndexes()验证索引是否已经创建好:
db.numbers.getIndexes()



获取数据库信息:
1、显示系统上所有数据库的列表:
show dbs


2、显示定义在当前数据库里的所有集合的列表:
show collections
或范围更明确的:show tables


3、获取数据库与集合更底层的信息:
db.stats()
也可以在单独的集合上执行stats()命令:
db.numbers.stats()


4、查看一些方法的底层实现:键入不带执行括号的方法名即可
db.numbers.save
PS:查看后可知道save()只是对insert()和update()的封装



Author:致知

Sign:路漫漫其修远兮,吾将上下而求索。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值