在客户端指定数据库进行连接:(默认连接本机test数据库)
[mongod@MongoDB ~]$ mongo10.0.0.152/admin
MongoDB shell version: 3.2.8
connecting to: 10.0.0.152/admin
> db
admin
查看当前数据库版本
> db.version()
3.2.8
切换数据库
> use test;
switched to db test
显示当前数据库
> db
test
> db.getName()
test
查询所有数据库
> show dbs;
clsn 0.000GB
local 0.000GB
test 0.000GB
> show databases;
clsn 0.000GB
local 0.000GB
test 0.000GB
查看clsn数据库当前状态
>use clsn;
> db.stats()
{
"db":"clsn",
"collections":1,
"objects":10000,
"avgObjSize":80,
"dataSize":800000,
"storageSize":258048,
"numExtents":0,
"indexes":1,
"indexSize":94208,
"ok":1}
查看当前数据库的连接机器地址
> db.getMongo()
connection to 127.0.0.1
1.5.2 数据管理
创建数据库
> use clsn;
说明:
创建数据库:
当use的时候,系统就会自动创建一个数据库。
如果use之后没有创建任何集合。系统就会删除这个数据库。
删除数据库
> show dbs;
clsn 0.000GB
local 0.000GB
test 0.000GB
> use clsn
switched to db clsn
> db.dropDatabase()
{ "dropped" : "clsn", "ok" : 1 }
说明:
删除数据库:
如果没有选择任何数据库,会删除默认的test数据库
创建集合
方法一:
> use clsn;
switched to db clsn
> db.createCollection('a')
{ "ok" : 1 }
> db.createCollection('b')
{ "ok" : 1 }
查看当前数据下的所有集合
> show collections;
a
b
> db.getCollectionNames()
[ "a","b"]
方法二:
当插入一个文档的时候,一个集合就会自动创建。
>use clsn;
switched to db clsn
> db.c.insert({name:'clsn'});
WriteResult({ "nInserted":1 })
> db.c.insert({url:'http://blog.nmtui.com'});
WriteResult({ "nInserted":1})
查看创建的合集
> db.getCollectionNames()
[ "a","b","c"]
查看合集里的内容
> db.c.find()
{ "_id": ObjectId("5a4cbcea83ec78b7bea904f8"),"name":"clsn" }
{ "_id": ObjectId("5a4cbcfc83ec78b7bea904f9"),"url":"http://blog.nmtui.com"}
重命名集合
> db.c.renameCollection("clsn")
{ "ok":1 }
> db.getCollectionNames()
[ "a","b","clsn"]
删除合集
> db.a.drop()true
> db.getCollectionNames()
[ "b","clsn"]
插入1w行数据
>for(i=0;i<10000;i++){ db.log.insert({"uid":i,"name":"mongodb","age":6,"date":new Date()}); }
WriteResult({ "nInserted":1})
查询集合中的查询所有记录
> db.log.find()
注:默认每页显示20条记录,当显示不下的的情况下,可以用it迭代命令查询下一页数据。
> DBQuery.shellBatchSize=50; # 每页显示50条记录50
app
> db.log.findOne() # 查看第1条记录
app
> db.log.count() # 查询总的记录数
app
> db.log.find({uid:1000}); # 查询UUID为1000的数据
删除集合中的记录数
> db.log.distinct("name") # 查询去掉当前集合中某列的重复数据
[ "mongodb" ]
> db.log.remove({}) # 删除集合中所有记录
WriteResult({ "nRemoved":10000 })
> db.log.distinct("name")
[ ]
查看集合存储信息
> db.log.stats() # 查看数据状态
> db.log.dataSize() # 集合中数据的原始大小> db.log.totalIndexSize() # 集合中索引数据的原始大小> db.log.totalSize() # 集合中索引+数据压缩存储之后的大小> db.log.storageSize() # 集合中数据压缩存储的大小
pretty()使用
> db.log.find({uid:1000}).pretty()
{
"_id": ObjectId("5a4c5c0bdf067ab57602f7c2"),
"uid":1000,
"name":"mongodb",
"age":6,
"date": ISODate("2018-01-03T04:28:59.343Z")
}
"show dbs" 命令可以显示所有数据的列表。
执行 "db" 命令可以显示当前数据库对象或集合。
运行"use"命令,可以连接到一个指定的数据库。
删除数据库:
use runoob
db.dropDatabase()
删除集合:db.collection.drop()
> use runoob
switched to db runoob
> show tables
site
> db.site.drop()
true
> show tables
创建集合:db.createCollection(name, options)
use test
db.createCollection("runoob")
db.createCollection("mycol", { capped : true, autoIndexId : true, size : 6142800, max : 10000 } )
在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。
> db.mycol2.insert({"name" : "菜鸟教程"})
删除集合:
db.collection.drop()
>use mydb
switched to db mydb
>show collections
mycol
mycol2
system.indexes
runoob
>db.mycol2.drop()
true
插入文档:db.COLLECTION_NAME.insert(document)
>db.col.insert({title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库', by: '菜鸟教程',url:'http://www.runoob.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100})
查看已插入文档:
> db.col.find()
更新文档:
update() 方法用于更新已存在的文档。语法格式如下:
db.collection.update(
参数说明:
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
save() 方法:
save() 方法通过传入的文档来替换已有文档。语法格式如下:
db.collection.save(
参数说明:
document : 文档数据。
writeConcern :可选,抛出异常的级别。
>db.col.save({ "_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "Runoob", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "NoSQL" ], "likes" : 110})
删除文档:
db.collection.remove(
参数说明:
query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档。
writeConcern :(可选)抛出异常的级别。
>db.col.remove({'title':'MongoDB 教程'})
查询文档:db.collection.find(query, projection)
query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
>db.col.find().pretty()
pretty() 方法以格式化的方式来显示所有文档。
db.col.find().pretty()
and:>db.col.find({key1:value1, key2:value2}).pretty()
> db.col.find({"by":"菜鸟教程", "title":"MongoDB 教程"}).pretty()
or:>db.col.find( { $or: [ {key1: value1}, {key2:value2} ] }).pretty()
>db.col.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
AND 和 OR 联合使用:
>db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()