Mongo 数据库

安装

首先到 Mongo 的官方网站下载安装程序:http://www.mongodb.org/,我下载的文件名为:mongodb-win32-x86_64-2008plus-2.6.4-signed.msi

执行安装程序。

下一步

同意许可协议

可以选择定制 Custom 看一下。

全部装上吧。

开始实际安装。

MongoDB 默认安装到了 C:\Program Files\MongoDB 2.6 Standard\bin 目录下,但是,没有自动添加到 Path 路径中,手工添加一下。

直接执行 mongod 启动数据库,收到下面的信息,原来要指定数据库文件的位置。

PS \> mongod
C:\Program Files\MongoDB 2.6 Standard\bin\mongod.exe --help for help and startup options
2014-09-13T11:24:01.755+0800 [initandlisten] MongoDB starting : pid=42300 port=27017 dbpath=\data\db\ 64-bit host=OpenXLive
2014-09-13T11:24:01.755+0800 [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
2014-09-13T11:24:01.755+0800 [initandlisten] db version v2.6.4
2014-09-13T11:24:01.755+0800 [initandlisten] git version: 3a830be0eb92d772aa855ebb711ac91d658ee910
2014-09-13T11:24:01.755+0800 [initandlisten] build info: windows sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1') BOOST_LIB_VERSION=1_49
2014-09-13T11:24:01.755+0800 [initandlisten] allocator: system
2014-09-13T11:24:01.755+0800 [initandlisten] options: {}
2014-09-13T11:24:01.770+0800 [initandlisten] exception in initAndListen: 10296
*********************************************************************
ERROR: dbpath (\data\db\) does not exist.
Create this directory or give existing directory in --dbpath.
See http://dochub.mongodb.org/core/startingandstoppingmongo
*********************************************************************
, terminating
2014-09-13T11:24:01.770+0800 [initandlisten] dbexit:
2014-09-13T11:24:01.770+0800 [initandlisten] shutdown: going to close listening sockets...
2014-09-13T11:24:01.786+0800 [initandlisten] shutdown: going to flush diaglog...
2014-09-13T11:24:01.786+0800 [initandlisten] shutdown: going to close sockets...
2014-09-13T11:24:01.786+0800 [initandlisten] shutdown: waiting for fs preallocator...
2014-09-13T11:24:01.786+0800 [initandlisten] shutdown: lock for final commit...
2014-09-13T11:24:01.786+0800 [initandlisten] shutdown: final commit...
2014-09-13T11:24:01.786+0800 [initandlisten] shutdown: closing all files...
2014-09-13T11:24:01.786+0800 [initandlisten] closeAllFiles() finished
2014-09-13T11:24:01.786+0800 [initandlisten] dbexit: really exiting now

创建一个保存数据库文件的文件夹,使用 --dbpath 来启动,成功了。

mongod --dbpath c:/mysite/mongodb

重新打开一个命令窗口,输入 mongo 启动 mongo 的命令行。

PS C:\mysite> mongo
MongoDB shell version: 2.6.4
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
>

首先,我们创建一个数据库保存我们的用户信息,数据库的名字就叫作 members 好了。

use members

很像 SQL Server ,如果没有这个数据库,马上就会创建这个数据库。
使用 show dbs 可以查看有哪些数据库。

在这个数据库中创建一个名为 users 的集合,并插入一条用户信息。当前没有 users 集合,mongodb 会直接创建它。

> db.users.insert( { "userId":1,  "name":"tom", "email":"tom@nodejs.org" })

查找信息可以使用  find 或者 findOne,区别在于 findOne 只会返回一个结果。

db.users.findOne( {"userId": 1})

返回的结果:

{
"_id" : ObjectId("5413be6e9e1c9f9c4386756d"),
"userId" : 1,
"name" : "tom",
"email" : "tom@nodejs.org"
}

驱动程序

编辑 package.json, 添加对于 mongodb 的引用。

{
"name": "express-api",
"version": "0.0.1",
"dependencies": {
"express": "2.5.9",
"ejs": "0.4.2",
"mongodb": "1.4.1"
}
}

重新 npm install 安装 mongodb 的驱动。
输出如下:

PS C:\mysite> npm install
npm WARN package.json express-api@0.0.1 No description
npm WARN package.json express-api@0.0.1 No repository field.
npm WARN package.json express-api@0.0.1 No README data
npm WARN package.json ejs@0.4.2 No repository field.
npm http GET https://registry.npmjs.org/mongodb
npm http 304 https://registry.npmjs.org/mongodb
npm http GET https://registry.npmjs.org/mongodb/-/mongodb-1.4.1.tgz
npm http 200 https://registry.npmjs.org/mongodb/-/mongodb-1.4.1.tgz
npm http GET https://registry.npmjs.org/bson
npm http GET https://registry.npmjs.org/kerberos
npm http 200 https://registry.npmjs.org/kerberos
npm http GET https://registry.npmjs.org/kerberos/-/kerberos-0.0.3.tgz
npm http 200 https://registry.npmjs.org/bson
npm http GET https://registry.npmjs.org/bson/-/bson-0.2.7.tgz
npm http 200 https://registry.npmjs.org/kerberos/-/kerberos-0.0.3.tgz
npm http 200 https://registry.npmjs.org/bson/-/bson-0.2.7.tgz > kerberos@0.0.3 install C:\mysite\node_modules\mongodb\node_modules\kerberos
> (node-gyp rebuild 2> builderror.log) || (exit 0) C:\mysite\node_modules\mongodb\node_modules\kerberos>node "c:\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modues\node-gyp\bin\node-gyp.js" rebuild
npm http GET https://registry.npmjs.org/nan
npm http 200 https://registry.npmjs.org/nan
npm http GET https://registry.npmjs.org/nan/-/nan-0.8.0.tgz
npm http 200 https://registry.npmjs.org/nan/-/nan-0.8.0.tgz > bson@0.2.7 install C:\mysite\node_modules\mongodb\node_modules\bson
> (node-gyp rebuild 2> builderror.log) || (exit 0) C:\mysite\node_modules\mongodb\node_modules\bson>node "c:\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\ode-gyp\bin\node-gyp.js" rebuild
mongodb@1.4.1 node_modules\mongodb
├── kerberos@0.0.3
└── bson@0.2.7 (nan@0.8.0)
PS C:\mysite>

使用 MongoDB 数据库

修改代码,首先 require mongodb 模块,然后连接到 mongodb 数据库。

var mongo = require("mongodb");
var express = require("express");
var app = express.createServer();
app.set("view engine", "ejs");
app.set("views", __dirname + "/views");
app.set("view options", { layout: false }); app.get("/", function (request, response) {
response.render("index");
}); app.get("/user/:id", function (request, response) {
var id = request.params.id;
console.log(id); app.users.findOne({ "userId": +id }, function (error, doc) {
if (error) return next(error);
response.json(doc);
});
}); // connect mongodb
var server = new mongo.Server("127.0.0.1", 27017);
var db = new mongo.Db("members", server, {safe:true }).open(function (error, client) {
if (error) throw error;
console.log("\033[96m + \033[39m connected to mongodb");
app.users = new mongo.Collection(client, "users");
client.ensureIndex("users", "userId", function (error) {
if (error) throw error;
console.log("\033[96m + \033[39m ensured index.");
console.log("Web Server listening ......");
app.listen(3000);
});
});

注意现在是到数据库中查找用户。id 前面的 + 用来将表单中的字符串类型数据转换为我们需要的数字类型。

app.users.findOne({ "userId": +id }, function (error, doc) {
if (error) return next(error);
response.json(doc);
});

将 node.js 的数据保存到 mongo 数据库中的更多相关文章

  1. 快速将excel数据保存到Oracle数据库中【转】

    我们在工作中,也许会碰到以下情况,客户或者同事发来需要调查的数据,并不是dmp文件,而是excel文件,此时通常是一张表,少量几条记录.最近我恰好碰到了这种情况,所以做了些调查,不敢藏私,拿出来跟大家 ...

  2. 多线程爬取猫眼电影TOP100并保存到mongo数据库中

    import requests import re import json from requests.exceptions import RequestException from multipro ...

  3. node 爬虫 --- 将爬取到的数据,保存到 mysql 数据库中

    步骤一:安装必要模块 (1)cheerio模块 ,一个类似jQuery的选择器模块,分析HTML利器. (2)request模块,让http请求变的更加简单 (3)mysql模块,node连接mysq ...

  4. 我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中:

    我用C#调用C编译的dll中有这样一个函数,函数大概的功能就是把数据保存到buf缓冲区中: C/C++ code   ? 1 int retrieve(int scanno,void* buf); 在 ...

  5. Python scrapy爬虫数据保存到MySQL数据库

    除将爬取到的信息写入文件中之外,程序也可通过修改 Pipeline 文件将数据保存到数据库中.为了使用数据库来保存爬取到的信息,在 MySQL 的 python 数据库中执行如下 SQL 语句来创建 ...

  6. mysql触发器的使用 想让b字段在更新的时候把旧数据保存到a字段中

    使用mysql希望数据库自动触发一些规则,进行更新数据的时候,就需要用触发器了,比如 将旧数据保存到额外字段中,如何做呢? 在abc表中 name更新的时候 我希望把name的老数据保存到 old_n ...

  7. Python实现将图片以二进制格式保存到MySQL数据库中,以及取出:

    创建数据库表格式: CREATE TABLE photo ( photo_no int(6) unsigned NOT NULL auto_increment, image MEDIUMBLOB, P ...

  8. 使用scrapy爬取的数据保存到CSV文件中,不使用命令

    pipelines.py文件中 import codecs import csv # 保存到CSV文件中 class CsvPipeline(object): def __init__(self): ...

  9. 爬取前尘无忧python职位信息并保存到mongo数据库

    1.re实现 import re,os import requests from requests.exceptions import RequestException MAX_PAGE = 10 # ...

随机推荐

  1. [java] 40个Java多线程问题总结

    40个问题汇总 1.多线程有什么用? 一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡.所谓"知其然知其所以然","会用 ...

  2. CCS float vs clear

    有人已经写过了.(*^__^*) 嘻嘻…… 为啥我不能写, ( ‵o′)凸 float 首先,HTML的布局是流布局.其元素是分为行内元素和块级元素的. 所谓行内元素就是接着写不会发生换行的元素如&l ...

  3. Angular学习(1)

    天天都是hello world,老子玩1+1. 最简单的例子,见证无聊的时刻: <!DOCTYPE html> <html> <head> <title> ...

  4. Func系列3:自定义模块

    简介 Func自带的模块已经非常丰富,但在日常系统运维当中,尤其是面对大规模的服务器集群.不同类别的业务平台,次是Func自带的模块或许已经不能满足我们的需求,所以有必要通过自定义模块来填补这块的不足 ...

  5. Makefile选项CFLAGS,LDFLAGS,LIBS

    CFLAGS 表示用于 C 编译器的选项, CXXFLAGS 表示用于 C++ 编译器的选项.这两个变量实际上涵盖了编译和汇编两个步骤. CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS ...

  6. 【MySQL】insert批量插入优化方案

    对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长.特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久.因此,优化数据库插入性能是很有意义的. ...

  7. linux svn迁移备份的三种方法

    原文:http://www.iitshare.com/linux-svn-migration.html svn备份方式对比分析 一般采用三种方式: 1.svnadmin dump 2.svnadmin ...

  8. Java的最大优势还是跨平台么?

    之前码农界有码农说Java的最大优势是跨平台,真的是这样么?其实当时网络没这么火爆的时候,确实是这样的,但现在这已然不是了. 跨平台还是Java的最大优势么? 有跨平台需求的仅仅是客户端应用,而不是服 ...

  9. Form_Form与OAF页面互相调用(案例)

    2014-12-27 Created By BaoXinjian

  10. POJ 1066 Treasure Hunt(计算几何)

    题意:给出一个100*100的正方形区域,通过若干连接区域边界的线段将正方形区域分割为多个不规则多边形小区域,然后给出宝藏位置,要求从区域外部开辟到宝藏所在位置的一条路径,使得开辟路径所需要打通的墙壁 ...