使用Node.js执行MongoDB Atlas的基本操作
首先
目标是能够使用Node.js对MongoDB Atlas进行基本操作。
MongoDB Atlas是由MongoDB公司提供的基于云端的MongoDB环境。
要使用MongoDB Atlas,需要进行注册,但本文档不会对此进行解释。
■ 环境
MongoDB Atlas 5.0.8 版本
Node.js v16.15.0 的版本
mongodb(驱动程序)4.6.0
■ 目的 or 目标
-
- クラウド上のMongoDBに接続できるようになる
-
- MongoDBからデータを取得できるようになる
-
- MongoDBにデータを追加できるようになる
-
- MongoDBのデータを変更できるようになる
- MongoDBからデータを削除できるようになる
■ 准备
使用 npm 安装 mongodb
■ 连接
const { MongoClient, ServerApiVersion, MongoCursorInUseError } = require('mongodb')
// 接続文字列(MongoDBのサイトで調べることができる)
const uri = 'mongodb+srv://...'
async function main() {
const client = new MongoClient(uri,
{ useNewUrlParser: true, useUnifiedTopology: true, verApi: ServerApiVersion.v1 })
try {
await client.connect()
// ToDo: 各種DB操作
}
catch (err) {
console.log(err.message)
}
finally {
client.close()
}
}
■ 数据获取
const query = {} // 検索条件
const sort = { contents: 1 } // ソート 1:昇順、-1:降順
const collection = client.db("test").collection("items")
const cursor = collection.find(query).sort(sort)
const documents = await cursor.toArray()
documents.forEach(doc => console.log(doc))
await cursor.close()
查询条件
// 全件取得
const query = {}
// titleが「今日の天気」と完全一致するアイテムを取得
const query = { title: '今日の天気' }
// テキストの部分一致は正規表現を使う
const query = { title: /今日/ }
// 数値の場合はこう
const query = { id: 123 }
排序的优先顺序 de
// 複数のソートキーを指定すると、指定順に優先度が決まる
// 1:昇順、-1:降順
const sort = { contents: 1, temp: 1 }
■ 添加数据
const item = {
title: '今日の天気',
contents: '今日の天気は晴れのち曇り'
}
const collection = client.db("test").collection("items")
const result = await collection.insertOne(item)
console.log(`追加したドキュメントのIDは${result.insertedId}です`)
■ 数据的更改
更新一项
const filter = {title: '今日の天気'}
const update = {
$set: {
contents: '今日は晴天'
}
}
const collection = client.db("test").collection("items")
// 複数のドキュメントが見つかった場合は最初のドキュメントが更新される
const result = await collection.updateOne(filter, update)
console.log(`${result.modifiedCount}件のドキュメントを更新しました`);
多个更新
const filter = {title: '今日の天気'}
const update = {
$set: {
contents: '今日は晴天'
}
}
const collection = client.db("test").collection("items")
const result = await collection.updateMany(filter, update)
console.log(`${result.modifiedCount}件のドキュメントを更新しました`);
■ 删除数据
删除一项
const query = {title: '今日の天気'} // 検索条件
const collection = client.db("test").collection("items")
// 複数のドキュメントが見つかった場合は最初のドキュメントが削除される
const result = await collection.deleteOne(query)
console.log(`${result.deletedCount}件、ドキュメントを削除しました`)
删除多个事项
const query = {title: '今日の天気'} // 検索条件
const collection = client.db("test").collection("items")
const result = await collection.deleteMany(query)
console.log(`${result.deletedCount}件、ドキュメントを削除しました`)
■ 参阅
本家网站的使用示例