Node使用 MongoDB

最近项目中需要使用MongoDB做数据存储,从安装到简单使用做下记录

Mac安装MongoDB

Mac上使用 brew 安装MongoDB相对比较简单

1
2
brew tap mongodb/brew
brew install mongodb-community //可以在后面跟版本号,安装指定版本brew install mongodb-community@6.0

安装信息:

  • 配置文件:/usr/local/etc/mongod.conf
  • 日志文件路径:/usr/local/var/log/mongodb
  • 数据存放路径:/usr/local/var/mongodb

运行MongoDB:

我们可以使用 brew 命令或 mongod 命令来启动服务。
brew 启动:

1
2
$ brew services start mongodb-community
==> Successfully started `mongodb-community` (label: homebrew.mxcl.mongodb-community)

brew 停止:

1
2
$ brew services stop mongodb-community
Stopping `mongodb-community`... (might take a while)

brew 重启

1
2
3
4
$ brew services restart mongodb-community
Stopping `mongodb-community`... (might take a while)
==> Successfully stopped `mongodb-community` (label: homebrew.mxcl.mongodb-community)
==> Successfully started `mongodb-community` (label: homebrew.mxcl.mongodb-community)

数据库操作

MongoDB的语法和MySql很类似,常用的操作命令如下
命令行打开数据库

1
2
3
4
5
$ mongosh
Current Mongosh Log ID: 63175e14bfac6e8caca29d59
Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.5.4
Using MongoDB: 6.0.1
Using Mongosh: 1.5.4

列出所有数据库

1
2
3
4
5
> show dbs
admin 40.00 KiB
aysncnpm 260.00 KiB
config 84.00 KiB
local 72.00 KiB

显示当前数据库

1
2
> db
test

创建&&切换数据库

1
2
> use aysncnpm  //如果数据库不存在,则创建数据库,否则切换到指定数据库。
switched to db aysncnpm

增删查改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
> db.npm.insert({name:'react1'})
DeprecationWarning: Collection.insert() is deprecated. Use insertOne, insertMany, or bulkWrite.
{
acknowledged: true,
insertedIds: { '0': ObjectId("6317612fbfac6e8caca29d5a") }
}

> db.npm.find({name:'react1}) //查
[ { _id: ObjectId("6317612fbfac6e8caca29d5a"), name: 'react1' } ]

> db.npm.update({name:'react1'},{$set:{name:'resct2'}}) //更新
DeprecationWarning: Collection.update() is deprecated. Use updateOne, updateMany, or bulkWrite.
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0
}

> db.npm.remove({name:'react2'}) //删除
{ acknowledged: true, deletedCount: 0 }

node.js链接MongoDB

使用npm安装MongoDB

1
npm install mongodb

创建链接

1
2
3
4
5
6
7
8
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/aysncnpm";

MongoClient.connect(url, function(err, db) {
if (err) throw err;
console.log("数据库已创建!");
db.close();
});

创建集合

1
2
3
4
5
6
7
8
9
10
11
12
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017';
MongoClient.connect(url, function (err, db) {
if (err) throw err;
console.log('数据库已创建');
var dbase = db.db("aysncnpm");
dbase.createCollection('npm', function (err, res) {
if (err) throw err;
console.log("创建集合!");
db.close();
});
});

增删查改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("aysncnpm");
var myobj = { name: "react1"};
dbo.collection("npm").insertOne(myobj, function(err, res) {
if (err) throw err;
console.log("文档插入成功");
db.close();
});
dbo.collection("npm").find(myobj).toArray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
dbo.collection("npm").updateOne(myobj, {$set:{name:'resct2'}}, function(err, res) {
if (err) throw err;
console.log("文档更新成功");
db.close();
});
dbo.collection("npm"). deleteOne(myobj, function(err, obj) {
if (err) throw err;
console.log("文档删除成功");
db.close();
});
});