mongodb的启动和mongodb shell的使用

启动本地:

以自己的为例

1.进入到安装的bin目录:

1-1.启动通常方式:D:\>cd d:\MongoDB\Server\3.4\bin D:\MongoDB\Server\3.4\bin>mongod.exe --dbpath D:MongoDB\data\db

1-2.启动浏览器访问方式:D:\>cd d:\MongoDB\Server\3.4\bin D:\MongoDB\Server\3.4\bin> mongod.exe --dbpath=D:MongoDB\data\db --rest

2.启动成功后,

进入到后台启动mongo.exedb 显示当前使用的数据库show dbs 显示所有的数据库use local 用需要的数据库,如果没有则会创建数据库

3.特殊用途的数据库

admin 从权限角度看,这是“root”数据库,需要将一个用户添加到里面,这个用户自动继承所有权限。一些特定的命令也只能从这个数据库使用,比如列出数据库和关闭服务器。

local 这个数据库永远不会被复制,可以用来存储限于本地单台服务器的任意集合。

config 当Mongo用于分片设置时,config数据库在内部使用,用于保存mongodb的分片信息。

4.文档

文档是一组键值(key--value)对,mongodb不用设置相同的字段,并且相同的字段不需要相同的数据类型

。一个简单的文档例子:{“site”:“www.baidu.com”,“name”:“百度”}

RDBMS MongoDB数据库 数据库表格 集合行 文档列 字段表联合 嵌入文档主键 

主键 (MongoDB 提供了 key 为 _id )数据库服务和客户端Mysqld/Oracle mongodmysql/sqlplus mongo需要注意的事项:

1.文档的键值对是有序的

2.文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以嵌入整个文档)

3.mongodb区分类型和大小写

4.mongodb的键不能有重复的键

5.文档的键是字符串,除了少数例外情况,键可以为任意utf-8字符串。

文档键命名规范:

键不能含有\0(空字符),

这个键用来表示键的结尾.和$具有特别的意义,

只有在特定的环境下才能使用以"_"开头的键是保留的(不是严格要求的)

5.集合集合就是mongodb的文档组,

相当于RDBMS中的表格集合存在于数据库中,没有固定的结构。

合法的集合名:

1.集合名不能是空字符串。

2.集合不能含有/0字符串(空字符),这个字符表示集合名的结尾。

3.集合名不能以“system.”开头,这是为系统集合保留的前缀。

4.用户创建的集合名字不能含有保留字符。

有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。

 除非你要访问这种系统创建的集合,否则千万不要在名字里出现$。

例如:db.col.findOne()6.capped collectionsCapped 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)个字节。元数据数据库的信息是存储在集合中。

它们使用了系统的命名空间:dbname.system.*在MongoDB数据库中名字空间 .system.* 是包含多种系统信息的特殊集合(Collection),如下:集合命名空间 描述dbname.system.namespaces 列出所有名字空间。

dbname.system.indexes 列出所有索引。dbname.system.profile 包含数据库概要(profile)信息。

dbname.system.users 列出所有可访问数据库的用户。

dbname.local.sources 包含复制对端(slave)的服务器信息和状态。

对于修改系统集合中的对象有如下限制。在{{system.indexes}}插入数据,可以创建索引。

但除此之外该表信息是不可变的(特殊的drop index命令将自动更新相关信息)。

{{system.users}}是可修改的。 {{system.profile}}是可删除的。

7.MongoDB 数据类型下表为MongoDB中常用的几种数据类型。

数据类型 描述String 字符串。存储数据常用的数据类型。

在 MongoDB 中,UTF-8 编码的字符串才是合法的。

Integer 整型数值。用于存储数值。

根据你所采用的服务器,可分为 32 位或 64 位。

Boolean 布尔值。用于存储布尔值(真/假)。

Double 双精度浮点值。用于存储浮点值。

Min/Max keys 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。

Arrays 用于将数组或列表或多个值存储为一个键。

Timestamp 时间戳。记录文档修改或添加的具体时间。

Object 用于内嵌文档。

Null 用于创建空值。

Symbol 符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。

Date 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。

Object ID 对象 ID。用于创建文档的 ID。

Binary Data 二进制数据。用于存储二进制数据。

Code 代码类型。用于在文档中存储 JavaScript 代码。

Regular expression 正则表达式类型。用于存储正则表达式。

MongoDB常用语法:

用户名,密码链接数据库: mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
创建数据库,没有创建,但是需要数据: use runoob        db.runoob.insert({"name":"菜鸟教程"})
删除数据库: db.dropDatabase()  db.collection.drop() 
插入文档:  db.COLLECTION_NAME.insert(document)
更新文档: 
db.collection.update(
   ,
   ,
   {
     upsert: ,
     multi: ,
     writeConcern: 
   }
)
删除文档:
db.collection.remove(
   ,
   
)
查询文档:
db.collection.find(query, projection)
条件查询
db.col.find({"likes" : {$gt : 100}})(大于)   db.col.find({likes : {$gte : 100}})(大于等于)    db.col.find({likes : {$lt :200, $gt : 100}})  (综合查询区间)

  1. db.col.find({},{"title":1,_id:0}).limit(2)

    补充说明:

    • 第一个 {} 放 where 条件,为空表示返回集合中所有文档。
    • 第二个 {} 指定那些列显示和不显示 (0表示不显示 1表示显示)。
  2.    joyran

      [email protected]

    想要读取从10条记录后100条记录,skip方法在limit方法之前,相当于sql中limit(10,100)。

    > db.COLLECTION_NAME.find().skip(10).limit(100)

    以上实例在集合中跳过前面10条返回100条数据。

    skip 和limit 结合就能实现分页。

进行排序:db.col.find({},{"title":1,_id:0}).sort({"likes":-1})
创建索引:db.col.ensureIndex({"title":1,"description":-1})
创建分组查询:db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
$sum 计算总和。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
$avg 计算平均值 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
$min 获取集合中所有文档对应值得最小值。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
$max 获取集合中所有文档对应值得最大值。 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
$push 在结果文档中插入值到一个数组中。 db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
$addToSet 在结果文档中插入值到一个数组中,但不创建副本。 db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
$first 根据资源文档的排序获取第一个文档数据。 db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
$last 根据资源文档的排序获取最后一个文档数据 db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])




你可能感兴趣的:(mongodb)