MongoDB数据库基本操作

一、使用数据库

显示所有数据库命令

$ ./mongo
MongoDB shell version: 3.0.6
connecting to: test
> show dbs
local 0.078GB
test 0.078GB
>

显示当前数据库对象

$ ./mongo
MongoDB shell version: 3.0.6
connecting to: test
> db
test
>

切换数据库

> use local
switched to db local
> db
local
>

 连接数据库

从上面我们已经知道连接数据库使用“mongo”命令,默认连接到test数据库,当然这个命令还可以带参数,如

$ ./mongo localhost:27017

表示连接到本地数据库服务,localhost表示主机名,这里也是默认连接到test数据库

>db
test
>

注意后面的端口号必须加上否则,连接到localhost数据库,即使localhost这个数据库为空

$ ./mongo localhost
MongoDB shell version: 3.0.6
connecting to: localhost
> db
localhost
>show dbs
local 0.078G
test 0.078G
>

如果在其他编程语言中连接MongoDB服务时,需要提供连接字符串,通用写法为

mongodb://username:password@hostname/dbname

更多连接实例(此部分参考MongoDB菜鸟教程

连接本地数据库服务器,端口是默认的。

mongodb://localhost

使用用户名fred,密码foobar登录localhost的admin数据库。

mongodb://fred:foobar@localhost

使用用户名fred,密码foobar登录localhost的baz数据库。

mongodb://fred:foobar@localhost/baz

连接 replica pair, 服务器1为example1.com服务器2为example2。

mongodb://example1.com:27017,example2.com:27017

连接 replica set 三台服务器 (端口 27017, 27018, 和27019):

mongodb://localhost,localhost:27018,localhost:27019

连接 replica set 三台服务器, 写入操作应用在主服务器 并且分布查询到从服务器。

mongodb://host1,host2,host3/?slaveOk=true

直接连接第一个服务器,无论是replica set一部分或者主服务器或者从服务器。

mongodb://host1,host2,host3/?connect=direct;slaveOk=true

当你的连接服务器有优先级,还需要列出所有服务器,你可以使用上述连接方式。

安全模式连接到localhost:

mongodb://localhost/?safe=true

以安全模式连接到replica set,并且等待至少两个复制服务器成功写入,超时时间设置为2秒。

mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000

参数选项说明

标准格式:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

标准的连接格式包含了多个选项(options),如下所示:

选项 描述
replicaSet=name 验证replica set的名称。 Impliesconnect=replicaSet.
slaveOk=true|false
  • true:在connect=direct模式下,驱动会连接第一台机器,即使这台服务器不是主。在connect=replicaSet模式下,驱动会发送所有的写请求到主并且把读取操作分布在其他从服务器。
  • false: 在 connect=direct模式下,驱动会自动找寻主服务器. 在connect=replicaSet 模式下,驱动仅仅连接主服务器,并且所有的读写命令都连接到主服务器。
safe=true|false
  • true: 在执行更新操作之后,驱动都会发送getLastError命令来确保更新成功。(还要参考 wtimeoutMS).

false: 在每次更新之后,驱动不会发送getLastError来确保更新成功。

w=n 驱动添加 { w : n } 到getLastError命令. 应用于safe=true。
wtimeoutMS=ms 驱动添加 { wtimeout : ms } 到 getlasterror 命令. 应用于 safe=true.
fsync=true|false
  • true: 驱动添加 { fsync : true } 到 getlasterror 命令.应用于 safe=true.
  • false: 驱动不会添加到getLastError命令中。
journal=true|false 如果设置为 true, 同步到 journal (在提交到数据库前写入到实体中). 应用于 safe=true
connectTimeoutMS=ms 可以打开连接的时间。
socketTimeoutMS=ms 发送和接受sockets的时间。

二、创建数据库

语法格式

use databasename

如果数据库不存在,则创建数据库,否则切换到指定数据库。注意新创建的数据库为空,如不向其中插入记录,则不会出现在show dbs语句的结果中

三、删除数据库

语法格式

db.dropDatabase()

删除当前数据库,默认为 test,你可以使用 db 命令查看当前数据库名。

注意删除了数据库后,db所引用的数据库仍然为被删除的数据库,只是这个数据库此时为空

上一篇:Django 数据库查询集合(双下划线连表操作)


下一篇:使用Yii框架中遇到的三个问题