欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用Nodejs连接mongodb数据库的实现代码

程序员文章站 2022-05-14 19:33:33
一个简单的nodejs连接mongodb示例,来自 1. 创建package.json 首先,创建我们的工程目录connect-mongodb,并作为我们的当前目录...

一个简单的nodejs连接mongodb示例,来自

1. 创建package.json

首先,创建我们的工程目录connect-mongodb,并作为我们的当前目录

mkdir connect-mongodb
cd connect-mongodb

输入npm init命令创建package.json

npm init

然后,安装mongodb的nodejs版本driver

npm install mongodb --save

mongodb驱动包将会安装到当前目录下的node_modules中

2. 启动mongodb服务器

安装mongodb并启动mongodb数据库服务,可参考我之前的文章,或者mongodb官方文档

3. 连接mongodb

创建一个app.js文件,并添加以下代码来连接服务器地址为192.168.0.243,mongodb端口为27017上名称为mynewdatabase的数据库

var mongoclient = require('mongodb').mongoclient,
  assert = require('assert');
// connection url
var url = 'mongodb://192.168.0.243:27017/mynewdatabase';
mongoclient.connect(url,function(err,db){
  assert.equal(null,err);
  console.log("connection successfully to server");
  db.close();
});

在命令行输入以下命令运行app.js

node app.js

4. 插入文档

在app.js中添加以下代码,使用insertmany方法添加3个文档到documents集合中

var insertdocuments = function(db, callback){
  // get ths 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 collection");
    callback(result);
  });
};

insert命令返回一个包含以下属性的对象:

  • result mongodb返回的文档结果
  • ops 添加了_id字段的文档
  • connection 执行插入操作所使用的connection

在app.js更新以下代码调用insertdocuments方法

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 successfully to server");
 insertdocuments(db, function() {
  db.close();
 });
});

在命令行中使用node app.js运行

5. 查询所有文档

添加finddocuments函数

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);
    console.log("found the following records");
    console.log(docs);
    callback(docs);
  });
};

finddocuments函数查询了所有'documents'集合中所有的文档,将此函数添加到mongoclient.connect的回调函数中

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() {
  finddocuments(db, function() {
   db.close();
  });
 });
});

6. 使用过滤条件(query filter)查询文档

查询'a':3的文档

var finddocuments = function(db, callback) {
 // get the documents collection
 var collection = db.collection('documents');
 // find some documents
 collection.find({'a': 3}).toarray(function(err, docs) {
  assert.equal(err, null);
  console.log("found the following records");
  console.log(docs);
  callback(docs);
 });   
}

7. 更新文档

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);
  });
};

updatedocument方法更新满足条件a为2的第一个文档,新增一个b属性,并将其设置为1。

将updatedocument方法添加到mongoclient.connect方法的回调中

mongoclient.connect(url,function(err,db){
  assert.equal(null,err);
  console.log("connection successfully to server");
  insertdocuments(db,function(){
    updatedocument(db,function(){
      db.close();
    });
  });
});

8. 删除文档

var removedocument = function(db,callback){
  // get the documents collection
  var collection = db.collection('documents');
  // remove some documents
  collection.deleteone({a:3},function(err,result){
    assert.equal(err,null);
    assert.equal(1,result.result.n);
    console.log("removed the document with the field a equal to 3");
    callback(result);
  });
};

添加到app.js中

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 successfully to server");
 insertdocuments(db, function() {
  updatedocument(db, function() {
   removedocument(db, function() {
    db.close();
   });
  });
 });
});

9. 创建索引

索引能够改善应用的性能。下面你代码在'a'属性上添加索引

var indexcollection = function(db,callback){
  db.collection('documents').createindex({
    a:1
  },null,function(err,results){
    console.log(results);
    callback();
  });
};

更新app.js

mongoclient.connect(url,function(err,db){
  assert.equal(null,err);
  console.log("connection successfully to server");
  insertdocuments(db,function(){
    indexcollection(db,function(){
      db.close();
    });
  });
});

代码已经托管在

总结

以上所述是小编给大家介绍的使用nodejs连接mongodb数据库的实现代码,希望对大家有所帮助