一、数据库 – 表
- 创建数据库 mydb
use mydb
use mydb
也是切换数据库命令。
- 删除数据库
db.dropDatabase()
这将删除选定的数据库。如果还没有选择任何数据库,然后它会删除默认的 test
数据库。
- 检查列表数据库通过使用命令 show dbs
>show dbs
local 0.000GB
mydb 0.044GB
test 0.000GB
- mongodb中没有表的概念,是collection,类似关系数据库中的表
show collections:显示当前数据库中的集合
> show collections
articles
jianshuusers
(也可以使用show tables)
5)创建数据库中的集合(表)
db.createCollection(name, options)
> db.createCollection('mycollection')
{ "ok" : 1 }
> show collections
articles
jianshuusers
mycollection
>
在MongoDB中,不需要创建集合。当插入一些文件 MongoDB 自动创建的集合。
> db.mytb.insert({"name":"Tomson"})
WriteResult({ "nInserted" : 1 })
> show collections
articles
jianshuusers
mytb
>
- 删除数据库中的集合(表)
db.COLLECTION_NAME.drop()
> db.articles.drop()
true
注意:删除时没有确认
二、查询
1)查询所有记录
db.articles.find()
相当于:select* from articles;
默认每页显示20条记录,当显示不下的情况下,可以用it迭代命令查询下一页数据。注意:键入it命令不能带“;”
但是你可以设置每页显示数据的大小,用DBQuery.shellBatchSize= 50;这样每页就显示50条记录了。
2)集合(表)的结构
mongodb是没查询集合结构(schema)的,直接用find查询数据就好了。
- 查询去掉后的当前聚集集合中的某列的重复数据
db.articles.distinct("author");
会过滤掉name中的相同数据
相当于:select distict(author) from articles;
- 条件查询:
查询likes > 1000的记录
> db.jianshuusers.find({likes:{$gt:1000}})
相当于:select * from jianshuusers where likes >1000
小于(<): $lt
大于等于(>=):$gte
小于等于(<=):$lte
db.jianshuusers.find({"nickname": "纯银V"});
相当于:select * from jianshuusers where nickname ='纯银V'
模糊查询
db.jianshuusers.find({nickname: /mongo/})
相当于%%
select * from jianshuusers where nickname like ‘%mongo%’;
db.jianshuusers.find({nickname: /^mongo/})
相当于 select * from jianshuusers where nickname like ‘mongo%’;
5)查询指定列
查询指定列nickname、url数据
db.jianshuusers.find({}, {nickname: 1, url: 1})
相当于:select nickname, url from jianshuusers;
6)排序
升序:
db.jianshuusers.find().sort({likes: 1})
降序:
db.jianshuusers.find().sort({likes: -1})
- 查询某个结果集的记录条数
db.jianshuusers.find({likes: {$gte: 1000}}).count()
相当于:select count(*) from jianshuusers where likes >= 1000;