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(  <query>,  <update>,  {    upsert: <boolean>,    multi: <boolean>,    writeConcern: <document>  })

参数说明:

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: <document>  })

参数说明:

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: <boolean>, writeConcern: <document> })

参数说明:

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容