假设我们想要在开发时优雅的启动/停用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
.
- 其实可以直接下载ZIP, 解压到目录, 例如
- 安装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.
网友评论