MongoDB

在客户端指定数据库进行连接:(默认连接本机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(  ,  {    upsert: ,    multi: ,    writeConcern:   })

参数说明:

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(  ,  {    writeConcern:   })

参数说明:

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( , { justOne: , writeConcern: })

参数说明:

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()

你可能感兴趣的:(MongoDB)