NodeJS连接MongoDB
实现nodejs连接mongdo,增删改查
各个功能独立
var MongoClient = require('mongodb').MongoClient;
var request = require('request');
var cheerio = require('cheerio');
var path = require('path');
var fs = require('fs');
var filenames=new Array();
var keywords='singerurl'
//连接字符串
var DB_URL = 'mongodb://localhost:27017/'
dbclient(DB_URL,'users','users',function(db,client0){
console.log('client0 connect DB finished ')
var data={
"singername" : "姜潮",
"singerurl" : "http://www.kugou.com/yy/singer/home/89163.html"
}
var data1 =[{
"singername" : "帆乃佳",
"singerurl" : "http://www.kugou.com/yy/singer/home/304438.html"
},{
"singername" : "柏木由紀",
"singerurl" : "http://www.kugou.com/yy/singer/home/95002.html"
}]
insertOneData(db,data);
console.log('insert one data finished')
insertManyData(db,data1,function(callback){
console.log('Insert many data finished')
});
client0.close()
console.log('client0 close')
});
/*
dbclient(DB_URL,'users','users',function(db,client){
console.log('connect DB finished ')
findAllData(db,function(callback){
console.log('find data finished');
console.log('data.length is :%d ',callback.length);
client.close();
});
console.log('client close')
});
*/
dbclient(DB_URL,'users','users',function(db,client1){
console.log('client1 connect DB finished ')
var urllist=[]
var datalist=[]
findkeyData(db,keywords,function(keylist,alllist){
console.log('find data finished');
console.log('data.length is :%d ',alllist.length);
/*
for(let item in alllist){
console.log(alllist[item])
console.log(item)
}
*/
//console.log('keylist[1]=[%s],alllist[1]=[%s]',keylist[1],alllist[1])
urllist=keylist
datalist=alllist
for(let i in keylist )
{
var tmpa={'singerurl':keylist[i]}
alllist[i].a=['new_item','test_'+i]
delete alllist[i]._id //更新数据的时候,因为_id是唯一的,所以不能把这个字段带上
//console.log(tmpa)
//console.log(alllist[i])
updateKeyData(db,tmpa,alllist[i],function (callback){
console.log('update data finished');
})
}
console.log('this is find finished')
client1.close()
});
console.log('client1 close')
});
function dbclient(host,collections,dbs,callback){
MongoClient.connect(host, {useNewUrlParser:true},function(err, client) {
var collect=client.db(collections)
var db = collect.collection(dbs);
console.log('连接 %s 成功,set collection[%s] and db[%s] finished',host,collections,dbs)
callback(db,client)
});
}
//定义函数表达式,用于操作数据库并返回结果,插入数据
var insertManyData = function(db, data,callback) {
db.insertMany(data, function(err, result) {
//如果存在错误
if(err)
{
console.log('Error:'+ err);
return;
}else{
//调用传入的回调方法,将操作结果返回
//console.log(result)
callback(result);
}
});
}
//定义函数表达式,用于操作数据库并返回结果,插入数据
var insertOneData = function(db, data) {
db.insertOne(data, function(err, result){
if(err){
//如果存在错误
console.log('Error:'+ err);
return;
}else{
console.log('One date be insert finished')
}
});
}
//定义函数表达式,用于操作数据库并返回结果,更新数据
var updateKeyData = function(db, olddata,newdata,callback) {
//获得指定的集合
//要修改数据的条件,>=10岁的用户
//var where={age:{"$gte":10}};
//要修改的结果
console.log(olddata)
console.log(newdata)
var set={$set:newdata};
db.updateMany(olddata,set, function(err, result) {
//如果存在错误
if(err)
{
console.log('Error:'+ err);
return;
}else{
//调用传入的回调方法,将操作结果返回
callback(result);
}
});
}
//定义函数表达式,用于操作数据库并返回结果,更新数据
var updateData = function(db, callback) {
//获得指定的集合
var collection = db.collection('users');
//要修改数据的条件,>=10岁的用户
var where={age:{"$gte":10}};
//要修改的结果
var set={$set:{age:95}};
collection.updateMany(where,set, function(err, result) {
//如果存在错误
if(err)
{
console.log('Error:'+ err);
return;
}
//调用传入的回调方法,将操作结果返回
callback(result);
});
}
//定义函数表达式,用于操作数据库并返回结果,从所有数据中获取指定元素数据
var findkeyData = function(db,keyword,callback) {
var keyvalue=[]
var allvalue=[]
db.find().toArray(function(err, result) {
//如果存在错误
if(err){
console.log('Error:'+ err);
return;
}else{
result.forEach(function(val){
for(let item in val){
if(item == keyword){
console.log(val[item]);
//console.log(val);
keyvalue.push(val[item]);
allvalue.push(val);
}
}
});
}
console.log('get keyvalue list finished');
//console.log(allvalue);
callback(keyvalue,allvalue);
});
}
//定义函数表达式,用于操作数据库并返回结果,查询数据
var findAllData = function(db,callback) {
db.find().toArray(function(err, result) {
//如果存在错误
if(err)
{
console.log('Error:'+ err);
return;
}
callback(result);
});
}
//定义函数表达式,用于操作数据库并返回结果,删除数据
var removeData = function(db, callback) {
//获得指定的集合
var collection = db.collection('users');
//要删除数据的条件,_id>2的用户删除
var where={_id:{"$gt":2}};
collection.remove(where,function(err, result) {
//如果存在错误
if(err)
{
console.log('Error:'+ err);
return;
}
//调用传入的回调方法,将操作结果返回
callback(result);
});
}