几个基本概念和特点

  • collection :数据表,集合,相当于文档组
  • document : row,数据记录行/文档,是一组键值对
  • filed: 列,字段
  • primary key:MongoDB会自动使用_id作为主键
  • capped collections:固定大小的collection,有很高的性能
  • BSON: 二进制形式的JSON数据

特点:

  • 文档中键值对是有序的
  • 区分类型和大小写
  • 文档不能有重复的键
  • 文档的键是字符串

基本命令

创建数据库

use <dbName>

创建完之后使用show dbs命令并不会显示,还需要向数据库中插入数据才行。

查看当前正在使用的数据库

db

默认使用的是test数据库。

查看所有的数据库

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

这里的几个默认数据库分别为:

  • admin

    具有root权限的数据库,如果将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限,一些特定的命令必须在这个数据库中执行。

  • local 这个数据库永远不会被复制,可用来存储仅限当台服务器使用的信息

  • config

    当MongoDB用于分片时,config数据库在内部使用,用来保存分片信息。

连接到一个指定的数据库

> use local
switched to db local

删除数据库

切换到要删除的数据库,然后执行:

db.dropDatabase()

显示/删除集合

  • 显示

    show tables
    

    show collections
    
  • 删除

    db.<collectionName>.drop()
    

如:

> use demo
switched to db demo
> show tables
demo
> db.demo.drop()
true
> show tables
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
>

创建集合

db.createCollection(name, options)

也可以不用手动创建集合,在插入文档的时候会自动创建集合。

插入文档

db.<collection_name>.insert(document)

查看已插入文档

db.<collection_name>.find()

更新文档

db.<collection_name>.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 :可选,抛出异常的级别。

还有一种办法,就是使用save,使用新文档替换旧文档:

db.<collection_name>.save(
   <document>,
   {
     writeConcern: <document>
   }
)

删除文档

db.<collection_name>.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)

查询文档

db.<collection_name>.find(query, projection)

想要返回的数据利于阅读,可以加一个pretty():

db.<collection_name>.find(query, projection).pretty()

问题和解决方案

  • mongo/sudo mongo都无法运行mongodb

报错信息如下:

Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: Connection refused :

connect@src/mongo/shell/mongo.js:328:13

@(connect):1:6

exception: connect failed

网上有很多歪招解决办法,实际上只要看下官方文档就可以知道,是没有设置dbpath导致的,重新设置下dbpath即可:

mongod --dbpath <你自己指定的path>