mongodb数据库
来源:互联网 发布:淘宝网贷口子 编辑:程序博客网 时间:2024/06/07 06:22
一.下载:
http://www.mongodb.org/dr/downloads.mongodb.org/win32/mongodb-win32-i386-2.4.6.zip/download
二、安装:
2.1 将下载后的安装文件保存到d:/mongodb
bin/ #运行命令
Mongod.exe 是用来连接到mongo数据库服务器的,即服务器端。
Mongo.exe 是用来启动MongoDB shell的,即客户端。
mongodump 逻辑备份工具。
mongorestore 逻辑恢复工具。
mongoexport 数据导出工具。
mongoimport 数据导入工具。
自己创建data 存放数据 logs 存放日志
然后通过cmd dos命令安装启动:
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\Administrator>d:
D:\>cd mongodb
D:\mongodb>cd bin
D:\mongodb\bin>D:\mongodb\bin>mongod.exe --dbpath 'd:\monogdb\data'
上面的命令行中,
--dbpath参数指出了数据库的目录
--logpath则指出了日志存放的目录,
--serviceName参数则指出了,命名安装的服务名为MongoDB.
注意:
Sat Sep 28 16:31:50.140 [initandlisten] MongoDB starting : pid=556 port=27017 db
path=d:\mongodb 32-bit host=cdhy03
Sun Sep 29 08:54:58.078 [initandlisten] waiting for connections on port 27017 数据库端口
Sun Sep 29 08:54:58.078 [websvr] admin web console waiting for connections on port 28017 web端口
pid=556 表示进程id
port=22017 表示端口好
dbpath= d:\mongodb 表示数据库的存储目录地址
host=cdhy03 表示服务器名
在浏览器输入http://127.0.0.1:27017/ 如果出现下面的描述表示安装成功!
You are trying to access MongoDB on the native driver port. For http diagnostic access, add 1000 to the port number
2.2 在windows中注册为服务
D:\mongodb\bin>mongod.exe --logpath "D:/mongodb/logs/mongodb.log" --logappend --dbpath "D:/mongodb/data" --directoryperdb --serviceName "MongoDB" --install
启动MongoDB:net start MongoDB
停止MongoDB:net stop MongoDB
三、卸载mongodb
卸载服务的命令也很简单,如下:
D:\mongodb>mongod --remove --serviceName "MongoDB"
四、简介:
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。
五、特点:
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
1)面向集合存储,易存储对象类型的数据。
2)模式自由。
3)支持动态查询。
4)支持完全索引,包含内部对象。
5)支持查询。
6)支持复制和故障恢复。
7)使用高效的二进制数据存储,包括大型对象(如视频等)。
8)自动处理碎片,以支持云计算层次的扩展性。
9)支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
10)文件存储格式为BSON(一种JSON的扩展)。
11)可通过网络访问。
六:mongo 命令
mongodb 为我们提供的客户端管理工具是mongo.exe
我们再开一个cmd,输入mongo命令打开shell,其实这个shell就是mongodb的客户端,同时也是一个js的编译器,默认连接的是“test”数据库。
#创建数据库: use dbName;
> use mycms;
#增加或修改用户密码:
db.addUser('name','pwd');
> db.addUser('admin','123456');
{
"user" : "admin",
"readOnly" : false,
"pwd" : "95ec4261124ba5951720b199908d892b",
"_id" : ObjectId("524789a3dc13cad8d0e41c5f")
}
#增加或修改用户密码
db.system.users.find();
#删除用户
db.removeUser('name');
#用户认证
db.auth('name','pwd'); 成功返回 1 否则返回 错误字符串
#查看所有用户
show users;
#删除当前的数据库
db.dropDatabase();
七、Mongodb添删改查操作
数据库有了,下一步就是集合,这里就取集合名为“person”,要注意的就是文档是一个json的扩展(Bson)形式。 (注意和数据库的表做区别)
#插入数据
db.集合名.insert
> db.pserson.insert({'name':'zhanghua','age':31,'sex':'男'});
> db.pserson.insert({'name':'eduask','age':10,'sex':'男'});
#查找
db.集合名.find({集合单元});
#安全查找
> db.pserson.find();
{ "_id" : ObjectId("52478b57dc13cad8d0e41c60"), "name" : "zhanghua", "age" : 31,
"sex" : "男" }
{ "_id" : ObjectId("52478b7adc13cad8d0e41c61"), "name" : "eduask", "age" : 10, "
sex" : "男" }
>
#按集合单元查找
> db.pserson.find({'name':'zhanghua'});
{ "_id" : ObjectId("52478b57dc13cad8d0e41c60"), "name" : "zhanghua", "age" : 31,
"sex" : "男" }
注意两点:
① “_id": 这个字段是数据库默认给我们加的GUID,目的就是保证数据的唯一性。
② 严格的按照Bson的形式书写文档,不过也没关系,错误提示还是很强大的。
#修改数据 update方法的第一个参数为“查找的条件”,第二个参数为“更新的值”
db.集合名.update({},{});
> db.pserson.update({'name':'zhanghua'},{'name':'zhh','age':32});
> db.pserson.find({'name':'zhanghua'});
> db.pserson.find();
{ "_id" : ObjectId("52478b57dc13cad8d0e41c60"), "name" : "zhh", "age" : 32 }
{ "_id" : ObjectId("52478b7adc13cad8d0e41c61"), "name" : "eduask", "age" : 10, "
sex" : "男" }
#删除
注意: 删除是必须带条件,否则将会全部删除,mongodb中是一个不可撤回的操作,三思而后行。
db.集合名.remove({单元条件});
> db.pserson.remove({'name':'zhh'});
> db.pserson.find();
{ "_id" : ObjectId("52478b7adc13cad8d0e41c61"), "name" : "eduask", "age" : 10, "
sex" : "男" }
#mongodb 修改命令:
上面我们简单的讲了mongodb 的修改命令,在实际的开发中更新操作无非也就两种,整体更新和局部更新.
像我们上面的命令就是属于整体更新,下面我们来看一个整个更新
全局更新:
> var p=db.pserson.findOne({'name':'eduask'}); #返回一个对象 注意大小写哦
> p.age; #对象集合访问属性
10
> p.age=8; #给对象集合属性重新赋值
8
> db.pserson.update({'name':'eduask'},p); #执行修改
> db.pserson.find();
{ "_id" : ObjectId("52478b7adc13cad8d0e41c61"), "name" : "eduask", "age" : 8, "s
ex" : "男" }
>
局部更新:
有时候我们仅仅需要更新一个字段,而不是整体更新,那么我们该如何做呢?easy的问题,mongodb中已经给我们提供了两个修改器: $inc 和 $set。
① $inc修改器 (在原有的数字上面追加)
$inc也就是increase的缩写,比如我们做一个在线用户状态记录,每次修改会在原有的基础上
自增$inc指定的值,如果“文档”中没有此key,则会创建key.
比如修改年龄:
> db.pserson.update({'name':'eduask'},{$inc:{'age':10}}); #8+10=18
> db.pserson.find();
{ "_id" : ObjectId("52478b7adc13cad8d0e41c61"), "name" : "eduask", "age" : 18, "
sex" : "男" }
>
② $set修改器 (直接覆盖原来的值)
> db.pserson.update({'name':'eduask'},{$set:{'age':10}});
> db.pserson.find();
{ "_id" : ObjectId("52478b7adc13cad8d0e41c61"), "name" : "eduask", "age" : 10, "
sex" : "男" }
>
(3) upsert操作: 这是mongodb自己创造的一种修改方式,在修改的时候,如果没有找到要修改的语句就插入条语句。
> db.pserson.update({'name':'cdeduask'},{$inc:{'age':5}},true); #将第三个参数设为 true
> db.pserson.find();
{ "_id" : ObjectId("52478b7adc13cad8d0e41c61"), "name" : "eduask", "age" : 5, "s
ex" : "男" }
{ "_id" : ObjectId("5247bc55583f17c9744e6e9d"), "age" : 5, "name" : "cdeduask" }
> db.pserson.update({'name':'cdeduas'},{$set:{'age':5}},true); #将第三个参数设为 true
> db.pserson.find();
{ "_id" : ObjectId("52478b7adc13cad8d0e41c61"), "name" : "eduask", "age" : 5, "s
ex" : "男" }
{ "_id" : ObjectId("5247bc55583f17c9744e6e9d"), "age" : 5, "name" : "cdeduask" }
{ "_id" : ObjectId("5247bc7e583f17c9744e6e9e"), "age" : 5, "name" : "cdeduas" }
>
(4)批量更新: 如果mongodb匹配多条数据,默认情况下,mongodb只更新一条语句,如果要批量更新的话,只需要在第四个参数设为true
> db.pserson.update({'name':'cdeduask'},{$inc:{'age':5}},true,true);
#mongodb 查找命令 find()查找 findOne()查找一条
日常开发中,我们玩查询的条件操作符号
>, >=, <, <=, !=, =, And, OR, In, NotIn,all 这些操作在mongodb里面都封装好
"$gt", "$gte", "$lt", "$lte", "$ne", "$or", "$in","$nin",$all,$not
案例说明:
1--查询 name <> "bruce" and age >= 18 的数据
db.users.find({name: {$ne: "bruce"}, age: {$gte: 18}});
2--查询 creation_date > '2010-01-01' and creation_date <= '2010-12-31' 的数据
db.users.find({creation_date:{$gt:new Date(2010,0,1), $lte:new Date(2010,11,31)});
3--查询 age in (20,22,24,26) 的数据
db.users.find({age: {$in: [20,22,24,26]}});
4--查询 age取模10等于0 的数据
db.users.find('this.age % 10 == 0');
5--查询 age取模10不等于0 的数据
db.users.find({age : {$not: {$mod : [10, 0]}}});
6--查询不匹配name=B*带头的记录(使用正则表达式)
db.users.find({name: {$not: /^B.*/}});
#查询年龄大于8岁的信息
> db.pserson.find({'age':{$gt:8}});
{ "_id" : ObjectId("5247bd1575f5a56b099802fe"), "name" : "eduask", "age" : 20, "
sex" : "女" }
#查询年龄等于8岁的信息
> db.pserson.find({'age':8});
{ "_id" : ObjectId("52478b7adc13cad8d0e41c61"), "name" : "eduask", "age" : 8, "s
ex" : "男" }
#下面我们来插入一条带数组模型的集合
>db.pserson.insert({'name':'zhanghua','age':31,'sex':'男','method':{'a':'aaaaa','b':'bbbbb'}});
> db.pserson.find();
{ "_id" : ObjectId("52478b7adc13cad8d0e41c61"), "name" : "eduask", "age" : 8, "s
ex" : "男" }
{ "_id" : ObjectId("5247bc55583f17c9744e6e9d"), "age" : 5, "name" : "cdeduask" }
{ "_id" : ObjectId("5247bc7e583f17c9744e6e9e"), "age" : 5, "name" : "cdeduas" }
{ "_id" : ObjectId("5247bd1575f5a56b099802fe"), "name" : "eduask", "age" : 20, "
sex" : "女" }
{ "_id" : ObjectId("5247c1aa2a849fa83aea4351"), "name" : "zhanghua", "age" : 31,
"sex" : "男", "method" : { "a" : "aaaaa", "b" : "bbbbb" } }
注意: 由于mongodb采用的是json语法规则,所以强大的js语法也适用与mongodb
比如: 我们需要查询 name=zhanghua 的 method里面的a属性=aaaa的
> db.pserson.find({'name':'zhanghua',"method.a":"aaaaa"}); #"method.a"
{ "_id" : ObjectId("5247c1aa2a849fa83aea4351"), "name" : "zhanghua", "age" : 31,
"sex" : "男", "method" : { "a" : "aaaaa", "b" : "bbbbb" } }
>
我们也可以使用 $in 来包含取值(同一个属性有多个值的时候)
> db.pseron.find({'method.a':{$in:['a','aa','aaa']}});
#$where 条件处理复杂查询
查找name='cdeduask'
>db.pseron.fin({$where:function(){
return this.name='jack'
}});
八、mongodb高级操作
8.1 聚合 常见的聚合操作跟sql server一样,有:count,distinct,group,mapReduce
全聚合文档统计查询: db.pserson.count();
条件聚合统计查询: db.p
0 0
- MongoDB:MongoDB数据库操作
- MongoDB数据库
- MongoDB数据库
- mongodb数据库
- mongodb数据库
- mongodb数据库
- 数据库:Mongodb
- 数据库-mongodb
- mongodb数据库
- MongoDB 数据库
- MongoDB数据库
- MongoDB数据库管理工具RockMongo
- MongoDB数据库文档说明
- 文档型数据库Mongodb
- MongoDB 数据库操作类
- NoSQL数据库:MongoDB初探
- mongoDB数据库的修复
- mongodb数据库操作语法
- 独木舟上的旅行
- 完美解决 Linux 下 Sublime Text 3中文输入
- Java & C++ 数组声明和使用语法对比
- 重排n^2宫问题
- C++入门(1)简单变量和数据类型
- mongodb数据库
- Method Swizzling
- 兄弟郊游问题
- Volley 简单使用
- 七种网卡绑定模式详解
- JAVA多态的实现方式
- 【GDKOI2010】载重量问题
- Android中在Button控件上显示倒计时
- SharePreferences自动登录功能