美文网首页
NodeJs开发之MongoDB

NodeJs开发之MongoDB

作者: 破旧的大卡车 | 来源:发表于2019-04-26 13:21 被阅读0次

    假设我们想要在开发时优雅的启动/停用mongodb. 可以如下操作:

    • 安装mongodb服务器以及命令行客户端, 我这里用的是windows版的, 其教程可以参考install-mongodb-on-windows:
      • 其实可以直接下载ZIP, 解压到目录, 例如E:\mongodb. 然后再将E:\mongodb\bin路径添加到路径path. 这样, 我们在命令行下可以执行mongo --version来看是否成功.
      • 以系统服务方式启动MongoDB, 用管理员权限运行以下命令:
        mkdir -p E:\mongodb\data\db E:\mongodb\logs
        touch E:\mongodb\logs\mongodb.log
        mongod --hinstall --logpath E:\mongodb\logs\mongdb.log --logappend --dbpath E:\mongodb\data\db
        net start MongoDB
        
        明显, 你可以通过net stop MongoDB来停止服务.
      • 测试连接Mongodb服务:
        mongo
        
        成功之后我们得到交互控制台. 查看数据库show dbs; 新建数据库use test; 插入数据db.test.insert({'id': 'arxiv:1904.13367'}); 显示插入的数据db.test.find(). 退出控制台exit.
    • 安装mongodb的node包:
    npm i mongodb --save
    
    • 修改你的package.json:
    "scripts": {
        "dev": "node -r esm src/main.js"
    },
    

    并新建目录mkdir db. 此时你的文件目录应该是:

    $ tree -I node_modules .
    .
    ├── db
    ├── package.json
    ├── package-lock.json
    └── src
        └── main.js
    
    2 directories, 3 files
    

    注意, 此时你应该可以运行mongod --dbpath=db看到

    waiting for connections on port 27017

    然后你Ctrl+C关闭了mongo客户端.

    同时注意, 为了避免混淆, 做nodejs本地开发的话应该先停止前面提到的以服务启动mongdb.

    • 下面我们来在node开发中操作数据库. 新建src/main.js如下:
    const MongoClient = require('mongodb').MongoClient;
    const url = 'mongodb://localhost:27017';
    const dbName = 'test';
    const data = [
      { id: 1, title: 'The first article'}, 
      { id: 2, title: 'The second article'}, 
      { id: 3, title: 'The third article'}, 
      { id: 1, title: 'The forth article'}
    ];
    
    MongoClient.connect(url, { useNewUrlParser: true }, function(err, client) {
      const db = client.db(dbName);
      var collection = db.collection('test');
      data.forEach(function(doc) {
        collection.insertOne(doc, function(err, res){
          console.log(doc);
        });
      });
      client.close();
    });
    

    在你确认mongodb服务器已经运行的情况下, 新开一个shell运行npm run dev则可插入data到数据库. 从控制台可以看到, 同一个‘id'的第一条和第四条数据插入了两次. 这是因为数据库内部是用_id来标识数据的. 自己试一试将id换成_id如何?

    可以看到后一个重复id虽然执行了插入命名, 但是并没有覆盖原来的同一个id.

    相关文章

      网友评论

          本文标题:NodeJs开发之MongoDB

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