笔记-DB-mongodb-常用操作-1

  笔记-DB-mongodb-常用操作-1

1.  启动及连接

1.1.  启动

启动mongod

windows下:

1.   如已添加服务 net start <service name>

1.2.  连接

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

mongodb:// 这是固定的格式,必须要指定。

username:password@ 可选项,如果设置,在连接数据库服务器之后,驱动都会尝试登陆这个数据库

host1 必须的指定至少一个host, host1 是这个URI唯一要填写的。它指定了要连接服务器的地址。如果要连接复制集,请指定多个主机地址。

portX 可选的指定端口,如果不填,默认为27017

/database 如果指定username:password@,连接并验证登陆指定数据库。若不指定,默认打开 test 数据库。

?options 是连接选项。如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开

1.2.1.  实例

使用默认端口来连接 MongoDB 的服务。

mongodb://localhost

通过 shell 连接 MongoDB 服务:

$ ./mongo

MongoDB shell version: 3.0.6

connecting to: test

……

1.2.2.  MongoDB 连接命令格式

使用用户名和密码连接到 MongoDB 服务器,你必须使用 'username:password@hostname/dbname' 格式,'username'为用户名,'password' 为密码。

使用用户名和密码连接登陆到默认数据库:

$ ./mongo

MongoDB shell version: 3.0.6

connecting to: test

使用用户 admin 使用密码 123456 连接到本地的 MongoDB 服务上。输出结果如下所示:

> mongodb://admin:123456@localhost/

...

使用用户名和密码连接登陆到指定数据库,格式如下:

mongodb://admin:123456@localhost/test

更多连接实例

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

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

2.  数据库操作

2.1.  查看/切换

show dbs     #查看当前数据库名,注意:使用use创建的数据库暂不显示,添加数据后显示。

db   /      db.getName() #查看当前数据库名

db.stats()      #查看当前数据库状态

db.version()  #查看数据库版本

查看当前db的链接机器地址       db.getMongo();

2.2.  创建/删除

use DATABASE_NAME

如果数据库不存在,则创建数据库,否则切换到指定数据库。

实例

以下实例我们创建了数据库 runoob:

> use runoob

switched to db runoob

db.dropDatabase()

删除数据库

3.  collection

集合分为固定与非固定collection,capped

3.1.  capped collections

Capped collections 是固定大小的collection。

它有很高的性能以及队列过期的特性(过期按照插入的顺序). 有点和 "RRD" 概念类似。

Capped collections是高性能自动的维护对象的插入顺序。它非常适合类似记录日志的功能 和标准的collection不同,你必须要显式的创建一个capped collection, 指定一个collection的大小,单位是字节。collection的数据存储空间值提前分配的。

要注意的是指定的存储大小包含了数据库的头信息。

db.createCollection("mycoll", {capped:true, size:100000})

在capped collection中,你能添加新的对象。

能进行更新,然而,对象不会增加存储空间。如果增加,更新就会失败 。

数据库不允许进行删除。使用drop()方法删除collection所有的行。

注意: 删除之后,你必须显式的重新创建这个collection。

在32bit机器中,capped collection最大存储为1e9( 1X109)个字节。

3.2.  常用操作

查看所有集合    show tables/show collections

删除 db.<collection name>.drop()

3.3.  创建集合

集合可以自动创建如下例:

> db.mycol2.insert({"name" : "菜鸟教程"})

> show collections

mycol2

显示创建集合:

db.createCollection(name, options)

参数说明:

name: 要创建的集合名称

options: 可选参数, 指定有关内存大小及索引的选项

4.  document

4.1.1.  查询

MongoDB 查询文档使用 find() 方法。

find() 方法以非结构化的方式来显示所有文档。

语法

MongoDB 查询数据的语法格式如下:

db.collection.find(query, projection)

query :可选,使用查询操作符指定查询条件

projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:

>db.col.find().pretty()

pretty() 方法以格式化的方式来显示所有文档。

4.1.2.  插入

db.COLLECTION_NAME.insert(document)

以下文档可以存储在 MongoDB 的 runoob 数据库 的 col 集合中:

>db.col.insert({title: 'MongoDB 教程',

    description: 'MongoDB 是一个 Nosql 数据库',

    by: '菜鸟教程',

    url: 'http://www.runoob.com',

    tags: ['mongodb', 'database', 'NoSQL'],

    likes: 100

})

如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档

4.1.3.  更新

update() 方法

db.collection.update(

   <query>,

   <update>,

   {

     upsert: <boolean>,

     multi: <boolean>,

     writeConcern: <document>

   }

)

实例

>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   # 输出信息

> db.col.find().pretty()

{

        "_id" : ObjectId("56064f89ade2f21f36b03136"),

        "title" : "MongoDB",

        "description" : "MongoDB 是一个 Nosql 数据库",

        "by" : "菜鸟教程",

        "url" : "http://www.runoob.com",

        "tags" : [

                "mongodb",

                "database",

                "NoSQL"

        ],

        "likes" : 100

}

save() 方法

save() 方法通过传入的文档来替换已有文档。语法格式如下:

db.collection.save(

   <document>,

   {

     writeConcern: <document>

   }

)

参数说明

  • document : 文档数据。
  • writeConcern :可选,抛出异常的级别。

以下实例中我们替换了 _id 为 56064f89ade2f21f36b03136 的文档数据:

>db.col.save({

    "_id" : ObjectId("56064f89ade2f21f36b03136"),

    "title" : "MongoDB",

    "description" : "MongoDB 是一个 Nosql 数据库",

    "by" : "Runoob",

    "url" : "http://www.runoob.com",

    "tags" : [

            "mongodb",

            "NoSQL"

    ],

    "likes" : 110

})

4.1.4.  删除

remove() 方法的基本语法格式如下所示:

db.collection.remove(

   <query>,

   <justOne>

)

6.  用户管理

1、用户概念

Mongodb的用户是由 用户名+所属库名组成

例如:

登录mongo  testdb1 ,创建用户testuser

登录mongo  testdb2 ,创建用户testuser

那上面创建的用户分别是:testuser@testdb1,testuser@testdb2

也就是说在哪个库下面创建用户,这个用户就是哪个库的

6.1.  查看

show users

6.2.  add/delete

db.addUser(“name”)

db.addUser("userName", "pwd123", true); 添加用户、设置密码、是否只读

db.removeUser("userName");

猜你喜欢

转载自www.cnblogs.com/wodeboke-y/p/10125798.html
今日推荐