NodeJS安装MongoDB
MongoDB客户端
NoSQL Manager for MongoDB
(默认端口27017)
创建数据库
创建 blog 数据库,但是刚刚创建的数据库由于没有数据并不会在这里显示
use blog;
db;
show dbs;
//删除数据库
db.dropDatabase();
插入数据
db.blog.insert({'id':1,'name':'123'});
show dbs;
建表
use blog;
show collections;
db.createCollection("mytest");
show collections;
//删表
db.mytest.drop();
查询数据
use blog;
db.blog.find();
mongodb驱动程序和Mongoose模块
cnpm install mongodb -g
cnpm install mongoose -g
NodeJS操作mongodb
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';
//mongodb连接字符串
var DB_URL = 'mongodb://localhost:27017/';
//测试插入数据
dbclient(DB_URL,'nebulae','astro',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,'nebulae','astro',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(var 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')
});
/**
* 连接mongodb
* @param host 连接字符串
* @param collections 表
* @param dbs 数据库
* @param callback
*/
function dbclient(host,collections,dbs,callback){
MongoClient.connect(host,{useUnifiedTopology:true,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)
});
}
/**
* 定义函数表达式,用于操作数据库并返回结果,插入一条数据
* @param db
* @param data
*/
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')
}
});
}
/**
* 插入多条数据
* @param db
* @param data
*/
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);
}
});
}
/**
* 更新数据
* @param db
* @param olddata
* @param newdata
* @param callback
*/
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);
}
});
}
/**
* 更新数据
* @param db
* @param callback
*/
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);
});
}
/**
* 所有数据中获取指定元素数据
* @param db
* @param keyword
* @param callback
*/
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);
});
}
/**
* 查询数据
* @param db
* @param callback
*/
var findAllData = function(db,callback) {
db.find().toArray(function(err, result) {
//如果存在错误
if(err)
{
console.log('Error:'+ err);
return;
}
callback(result);
});
}
/**
* 删除数据
* @param db
* @param callback
*/
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);
});
}
结果