视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
使用Nodejs连接mongodb数据库的实现代码
2020-11-27 22:32:08 责编:小采
文档

一个简单的nodejs连接mongodb示例,来自 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数据库的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    下载本文
    显示全文
    专题