- 参考资料
https://www.npmjs.com/package/mongodb
https://docs.mongodb.com/manual/
http://mongodb.github.io/node-mongodb-native/2.2/quick-start/?_ga=1.200175470.1902231701.1472189051 - 安装mongodb模块
npm install mongodb --save
1. 使用mongodb
- 链接 MongoDB
var MongoClient = require('mongodb').MongoClient, assert = require('assert');
// Connection URL
var url = 'mongodb://localhost:27017/myproject';
// Use connect method to connect to the Server
MongoClient.connect(url, function(err, db) {
assert.equal(null, err);
console.log("Connected correctly to server");
db.close();
});
//公共模块可以提取(Node模块创建以及使用)
- 插入文档
//Inserting a Document
var insertDocuments = function(db, callback) {
// Get the documents collection
var collection = db.collection('documents');
// Insert some documents
collection.insertMany([
{a : 1}, {a : 2}, {a : 3}
], function(err, result) {
assert.equal(err, null);
assert.equal(3, result.result.n);
assert.equal(3, result.ops.length);
console.log("Inserted 3 documents into the document collection");
callback(result);
});
}
var MongoClient = require('mongodb').MongoClient, assert = require('assert');
// Connection URL
var url = 'mongodb://localhost:27017/myproject';
// Use connect method to connect to the Server
MongoClient.connect(url, function(err, db) {
if(!err){
assert.equal(null, err); //单元测试模块
// assert.equal(a,b,c);理解:假设a和b相等则相安无事,如果a和b不相等则输出c语句。
console.log("Connected correctly to server");
insertDocuments(db, function() {
db.close();
});
}else{
console.log(err);
}
});
- 更新文档
// Updating a document
var updateDocument = function(db, callback) {
// Get the documents collection
var collection = db.collection('documents');
// Update document where a is 2, set b equal to 1
collection.updateOne({ a : 2 } //只更新最先满足条件的一条记录
, { $set: { b : 1 } }, function(err, result) {
assert.equal(err, null);
assert.equal(1, result.result.n);
console.log("Updated the document with the field a equal to 2");
callback(result);
});
}
var MongoClient = require('mongodb').MongoClient, assert = require('assert');
// Connection URL
var url = 'mongodb://localhost:27017/myproject';
// Use connect method to connect to the Server
MongoClient.connect(url, function(err, db) {
assert.equal(null, err);
console.log("Connected correctly to server");
// insertDocuments(db, function() {
updateDocument(db, function() {
db.close();
});
// });
});
- 查询文档
var findDocuments = function(db, callback) {
// Get the documents collection
var collection = db.collection('documents');
// Find some documents
collection.find({}).toArray(function(err, docs) {
assert.equal(err, null);
assert.equal(4, docs.length);//注意:文档长度
console.log("Found the following records");
console.dir(docs);
callback(docs);
});
}
var MongoClient = require('mongodb').MongoClient, assert = require('assert');
// Connection URL
var url = 'mongodb://localhost:27017/myproject';
// Use connect method to connect to the Server
MongoClient.connect(url, function(err, db) {
assert.equal(null, err);
console.log("Connected correctly to server");
//insertDocuments(db, function() {
// updateDocument(db, function() {
// deleteDocument(db, function() {
findDocuments(db, function() {
db.close();
});
// });
// });
//});
});
2. 使用mongoose
备注:使用之前一定要安装node.js 和 mongodb
NPM 包管理地址:https://www.npmjs.com/package/mongoose
-
安装 : npm install mongoose
-
参考资料
http://mongoosejs.com/docs/3.0.x/docs/api.html#index_mongoose-mongo
http://mongoosejs.com/docs/guide.htmlhttp://www.cnblogs.com/aaronjs/p/4489354.html
http://www.open-open.com/lib/view/open1375885691296.html -
添加数据
//mongoose 链接
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/project');
//通过Schema创建一个模式
var Schema = mongoose.Schema;
//实例化自定义文档方法
var blogSchema = new Schema({
title: String,
author: String,
body: String,
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
//创建一个模型
var Blog = mongoose.model('Blog', blogSchema);
//存储数据
var Blog = new Blog({
title: '痛并快乐着',
author: '白岩松',
body: '痛并快乐着一本经历',
hidden: false,
meta: {
votes: 12,
favs: 30
}
})
//保存数据库
Blog.save(function (err) {
if (err) {
console.log(err);
} else {
console.log('saved OK!');
}
mongoose.connection.close();
});
- 查询数据
//mongoose 链接
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/project');
//通过Schema创建一个模式
var Schema = mongoose.Schema;
//实例化自定义文档方法
var blogSchema = new Schema({
title: String,
author: String,
body: String,
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
//创建一个模型
var BlogModel = mongoose.model('Blog', blogSchema);
//查询条件
var where = {author:"白岩松"};
// 待返回的字段
var fields = {title : 1, author : 1, body : 1};
var options = {};
BlogModel.find(where, fields, options, function(error, result){
if(error) {
console.log(error);
} else {
console.log(result);
}
//关闭数据库链接
mongoose.connection.close();
});
- 修改数据
//mongoose 链接
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/project');
//通过Schema创建一个模式
var Schema = mongoose.Schema;
//实例化自定义文档方法
var blogSchema = new Schema({
title: String,
author: String,
body: String,
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
//创建一个模型
var BlogModel = mongoose.model('Blog', blogSchema);
var conditions = {author : '白岩松'};
var update = {$set : {age : 27, title : 'model_demo_title_update'}};
var options = {upsert : true};
BlogModel.update(conditions, update, options, function(error){
if(error) {
console.log(error);
} else {
console.log('update ok!');
}
//关闭数据库链接
mongoose.connection.close();
});
- 删除数据
//mongoose 链接
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/project');
//通过Schema创建一个模式
var Schema = mongoose.Schema;
//实例化自定义文档方法
var blogSchema = new Schema({
title: String,
author: String,
body: String,
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
//创建一个模型
var BlogModel = mongoose.model('Blog', blogSchema);
var conditions = {title: 'model_demo_title_update'};
BlogModel.remove(conditions, function(error){
if(error) {
console.log(error);
} else {
console.log('remove ok!');
}
//关闭数据库链接
mongoose.connection.close();
});
网友评论