安装brew:
$ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
通过brew安装mongodb:
$brew install mongodb
安装成功:
运行命令:
$mongod --version
不推荐
http://www.mongodb.org/downloads
下载最新的mongodb,比如mac目前最新的是mongodb-osx-x86_64-2.6.5.tgz
将下载的压缩包,解压到/Users/sang/bin/下面
配置环境变量,比如我的zsh配置到~/.zshrc里
export PATH=/Users/sang/bin/mongodb-osx-x86_64-2.6.4/bin:$PATH
create startmongo.sh
#! /bin/bash
mkdir -p ./data/mongodb
mongod --dbpath ./data/mongodb --logpath ./mongodb.log &
说明
- mongod是mongo deamon的意思,启动服务器
--dbpath是数据存储位置--logpath是日志存储位置
执行
./startmongo.sh
查看日志
tail -f ./mongodb.log
在线练习
http://try.mongodb.org/
本地
➜ ~ mongo
MongoDB shell version: 2.6.4
connecting to: test
Server has startup warnings:
2014-10-12T15:15:30.180+0800 [initandlisten]
2014-10-12T15:15:30.180+0800 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
>
打开命令窗口,键入mongo,如果系统提示:connecting to: test,表示连接成功。
键入show dbs,则会显示出当前数据库中所有的数据库名称。在mongodb里面是不用 去手动建立一个数据库的,你只要直接使用就好,如果不存在数据库引擎会帮我们 创建他们。这一点与传统数据库相比有些不同。
键入use mydb,使用数据库mydb,当然 mongodb会帮助我们自动创建他们,当然这个时候数据库还是空的,可以通过输入 show dbs来确认这一点。
输入:
db.user.save({name:'Rod',age:30})
db.user.find()
可查看出当前库user集合中所有的文档,如下所示:
{ "_id" : ObjectId("4df2201ac905b4e2a5f555cb"), "name" : "Rod", "age" : 30 }
此时发现,在文档的前面多了一列"_id",这是自动加进去的,不用管他。
db.user.remove()将删除所有记录,
db.user.remove({name:'Rod'})
将删除指定记录
输入:
for(var i=1;i<=20;i++) db.user.save({x:8,y:i})
,可以看出整个语法很像 JS,其实你正在使用的就是一个JavaScript Shell。此时可以输入db.user.find() 来查看所有记录。
我们再向集合中插入一条记录:
db.user.save({x:'test'})
,再次查看所有记录
db.user.find()
则发现只显示出了前20条记录。此时可以输入it(iteraor)来 查看余下的记录。
在mongodb里可以将cursor当成数组来使用,如下所示:
var cursor = db.user.find(); // 将游标缓存起来
printjson(cursor[4]); // 打印出第5条记录
注意此种方式会将前N行全查出来,所以对性能有较大影响。
现要查询出y大于10的所有记录:
db.user.find({y:{$gt:10}});
其中$gt的意思就是“大于”,当然读者可推出其他N种表达。
db.user.find({x:8},{y:true});// 查询出x=8的所有记录的y列
db.user.find({},{y:true}); // 查询出所有的Y列
有的时候我们只需要第一行的值,如果自己编程实现显得有些麻烦,因此数据库为我们 提供了一个方法:
db.user.findOne();
我们可以通过limit来限制查询的最大行数,如下:
db.user.find().limit(4); // 只显示出前四条
将第一条x为3的记录修改为后面的值,
db.user.update({x:4},{x:4,y:1});
增删改查crud
http://docs.mongodb.org/manual/core/crud-introduction/
http://www.tuicool.com/articles/ZVbYra
Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对
Entity : 由Model创建的实体,他的操作也会影响数据库
1.首先你必须安装MongoDB和NodeJS
2.在项目只能够创建一个数据库连接,如下:
var mongoose = require('mongoose'); //引用mongoose模块
var db = mongoose.createConnection('localhost','test'); //创建一个数据库连接
3.打开本机localhost的test数据库时,我们可以监测是否有异常
db.on('error',console.error.bind(console,'连接错误:'));
db.once('open',function(){
//一次打开记录
});
注意:
成功开启数据库后,就可以执行数据库相应操作,假设以下代码都在回调中处理
4.定义一个Schema
var PersonSchema = new mongoose.Schema({
name:String //定义一个属性name,类型为String
});
5.将该Schema发布为Model
var PersonModel = db.model('Person',PersonSchema);
//如果该Model已经发布,则可以直接通过名字索引到,如下:
//var PersonModel = db.model('Person');
//如果没有发布,上一段代码将会异常
6.用Model创建Entity
var personEntity = new PersonModel({name:'Krouky'});
//打印这个实体的名字看看
console.log(personEntity.name); //Krouky
7.我们甚至可以为此Schema创建方法
//为Schema模型追加speak方法
PersonSchema.methos.speak = function(){
console.log('我的名字叫'+this.name);
}
var PersonModel = db.model('Person',PersonSchema);
var personEntity = new PersonModel({name:'Krouky'});
personEntity.speak();//我的名字叫Krouky
8.Entity是具有具体的数据库操作CRUD的
personEntity.save(); //执行完成后,数据库就有该数据了
9.如果要执行查询,需要依赖Model,当然Entity也是可以做到的
PersonModel.find(function(err,persons){
//查询到的所有person
});
注意:
-
具体的如何配置Schema、Model以及Model和Entity的相关操作,我们会在后面进行
-
Model和Entity都有能影响数据库的操作,但仍有区别,后面我们也会做解释
Find the API docs here, generated using dox.
cd到node_modules/mongoose里
npm install
node static.js
这样就可以再本地看mongoose的api了
每个例子都不错,必须熟悉
node modules的好处是可以随时看到代码,是不是很爽啊?
- gridfs
- 集群



