Nodejs学习笔记(七)

通过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学习笔记(七))