美文网首页
Nodejs学习笔记(七)

Nodejs学习笔记(七)

作者: cab240f6e992 | 来源:发表于2017-11-29 18:41 被阅读0次

    通过Nodejs操作MongoDB

    安装MongoDB

    安装MongoDB

    Install MongoDB Driver

    npm install mongodb

    引入MongoDB Driver

    var mongo = require('mongodb');

    通过Nodejs创建MongoDB数据库

    1.创建Demo文件:touch createMongodbDemo.js

    2.在文件中写入:

    var MongoClient = require('mongodb').MongoClient;
    var url = "mongodb://localhost:27017/mydb";
    
    MongoClient.connect(url, function(err, db) {
      if (err) throw err;
      console.log("Database created!");
      db.close();
    });
    

    3.运行该文件:node createMongodbDemo.js
    可以在控制台看到:

    image.png

    4.注意,此时如果在连接了mongo之后,控制台运行show databases是看不到创建的mydb这个数据库的,因为该数据库里没有collections,目前只能看到adminlocal两个数据库

    通过Nodejs创建Collection

    1.将createMongodbDemo.js中的代码改写如下,使用db.createCollection来创建collection:

    var MongoClient = require('mongodb').MongoClient;
    var url = "mongodb://localhost:27017/mydb";
    
    MongoClient.connect(url, function(err, db) {
        if (err) throw err;
        db.createCollection("customers", function(err, res) {
            if (err) throw err;
            console.log("Collection created");
            db.close();
        })
    })
    

    2.运行该文件:node createMongodbDemo.js

    image.png

    3.验证是否创建成功了:

    • 进入mongo: mongo

    • 显示数据库: show databases

      image.png
      说明之前的mydb数据库成功创建了
    • 进入mydb数据库:use mydb

    • 显示collections: show collections

      image.png
      说明collection创建成功

    插入一条数据

    1.将代码改写如下,通过insertOne方法进行插入:

    var MongoClient = require('mongodb').MongoClient;
    var url = "mongodb://localhost:27017/mydb";
    
    MongoClient.connect(url, function(err, db) {
        if (err) throw err;
        var myObj = {
            name: 'wilson',
            age: 22
        }
        db.collection("customers").insertOne(myObj, function(err, res) {
            if (err) throw err;
            console.log("Insert successfully");
            db.close();
        })
    })
    

    2.运行代码

    3.切换到mydb数据库: use mydb

    4.查询customers collection中是否插入成功: db.customers.find().pretty()

    image.png

    插入多条数据

    1.将代码改写如下,通过insertMany方法进行插入:

    var MongoClient = require('mongodb').MongoClient;
    var url = "mongodb://localhost:27017/mydb";
    
    MongoClient.connect(url, function(err, db) {
        if (err) throw err;
        var myObjs = [
            {
                name: 'wilson',
                age: 22
            },
            {
                name: 'kathy',
                age: 21
            },
            {
                name: 'curry',
                age: 28
            }
        ]
        db.collection("customers").insertMany(myObjs, function(err, res) {
            if (err) throw err;
            console.log("Insert successfully");
            db.close();
        })
    })
    

    2.运行代码

    3.查询customers collection中是否插入成功: db.customers.find().pretty()

    查询一条数据

    1.将代码改写如下,通过findOne方法来进行查找:

    var MongoClient = require('mongodb').MongoClient;
    var url = "mongodb://localhost:27017/mydb";
    
    MongoClient.connect(url, function(err, db) {
        if (err) throw err;
        db.collection("customers").findOne({"name": "kathy"}, function(err, res) {
            if (err) throw err;
            console.log(res.age);
            db.close();
        })
    })
    

    输出了找到的那条记录的age。

    查询多条数据

    1.将代码改写如下,通过find方法来进行查找:

    var MongoClient = require('mongodb').MongoClient;
    var url = "mongodb://localhost:27017/mydb";
    
    MongoClient.connect(url, function(err, db) {
        if (err) throw err;
        db.collection("customers").find({}).toArray(function(err, res) {
            if (err) throw err;
            console.log(res);
            db.close();
        })
    })
    

    当查询条件为空时,会得到所有的记录。

    image.png

    2.如果我希望只显示某些字段该如何处理?比如我不想显示_id
    通过find方法的第二个参数来设置显示的字段,将上面的代码改写为:

    var MongoClient = require('mongodb').MongoClient;
    var url = "mongodb://localhost:27017/mydb";
    
    MongoClient.connect(url, function(err, db) {
        if (err) throw err;
        db.collection("customers").find({}, {"_id": false}).toArray(function(err, res) {
            if (err) throw err;
            console.log(res);
            db.close();
        })
    })
    

    这里{"_id": false}就可以不返回_id字段。

    image.png

    对查询到的数据进行排序

    1.将代码改写如下,通过sort方法来进行排序:

    var MongoClient = require('mongodb').MongoClient;
    var url = "mongodb://localhost:27017/mydb";
    
    MongoClient.connect(url, function(err, db) {
        if (err) throw err;
        var mySort = { age: 1 };
        db.collection("customers").find().sort(mySort).toArray(function(err, res) {
            if (err) throw err;
            console.log(res);
            db.close();
        })
    })
    

    var mySort = { age: 1 };表示按照age字段的升序进行排序。如果希望降序进行排序,只需要将1改成-1。

    相关文章

      网友评论

          本文标题:Nodejs学习笔记(七)

          本文链接:https://www.haomeiwen.com/subject/hmzfbxtx.html