This commit is contained in:
2012-10-24 10:43:33 +08:00
commit 439d6274e7
3 changed files with 128 additions and 0 deletions
+4
View File
@@ -0,0 +1,4 @@
## 这是一个关于node.js操作mongodb的demo,主要包含:
* CRUD on mongodb
* gridfs with mongodb
+56
View File
@@ -0,0 +1,56 @@
var mongo = require('mongodb');
var fs = require('fs');
var server = new mongo.Server('localhost', 27017, {
auto_reconnect: true
});
var db = new mongo.Db('mydb', server);
db.open(function(err, db) {
if(err) throw err;
var gridFs = new mongo.Grid(db, 'fs');
var buffer = fs.readFileSync('c://a.iso');
//该种方式存文件需要读取所有文件信息,如果文件过大可能会导致内存溢出
gridFs.put(buffer, {}, function(err, fileInfo) {
if(!err) {
console.log('write file success!');
}
//通过ID获取文件
gridFs.get(fileInfo._id, function(err, data) {
if(err) throw err;
//使用nodejs 原生api写入文件到硬盘
fs.writeFile('c:\\my.iso', data, 'gb2312', function(err) {
if(!err) {
console.log('write file to local file system succeed!');
}
});
})
});
//使用GridStore方式操作文件
var gridStore = new mongo.GridStore(db, new mongo.ObjectID(), 'w', {root: 'fs'});
gridStore.writeFile('c://a.iso', function(err, fileInfo) {
if(err) throw err;
console.log(fileInfo);
//新建一个gridstore用于读取文件
var readGrid = new mongo.GridStore(db, fileInfo._id, 'r');
readGrid.open(function(err, gridStore) {
//读取数据
readGrid.read(function(err, data) {
//写入到本地文件系统
fs.writeFile('c:\\myaaa.iso', data, function(err) {
if(!err) {
console.log('write file to local file system succeed!');
}
});
db.close();
});
});
});
});
+68
View File
@@ -0,0 +1,68 @@
var mongodb = require("mongodb");
var server = new mongodb.Server('localhost',27017,{auto_reconnect:true},10);
var db = new mongodb.Db("mydb2",server);
db.open(function(err,db){
if(err){
console.log("err occured.");
}
/*db.createCollection('fuck1',{safe:true},function(err,collection){
if(err){
console.log(err);
}else{
console.log("created successful!");
}
});*/
db.collection('fuck',function(err,collection){
var json = {
'name':'aaa',
'age':undefined
};
var array=[json,{'name':'mary'}];
collection.insert(array,{safe:true},function(err,result){
if (err) throw err;
console.log("insert done");
});
/*collection.update({'name':'tom'},{$set:{'name':'lily','age':100}},function(err,result){
if(err) throw err;
if(!err){
console.log("update successful");
}
});*/
/*collection.remove({'name':'tom'},{safe:true},function(err,result){
if(err) console.log(err);
});*/
/* //获取所有结果
collection.find().toArray(function(err,items){
if(err) throw err;
for(var i=0;i<items.length;i++){
console.log(items[i]);
}
for(item in array){
console.log(array[item]);
}
});*/
//流式获取所有结果
/* var stream = collection.find().streamRecords();
stream.on("data",function(item){
console.log(item);
});
stream.on("end",function(){
console.log("stream is end");
});*/
collection.findOne({'name':'tom'},function(err,result){
if (err) throw err;
console.log(result);
});
});
});