Appearance
可以通过客户端连接数据库,在实际开发的过程中需要代码和数据库进行连接,因此如何通过node 连接 mongoDB
使用 npm mongodb 进行连接
官网提供的参考 https://www.mongodb.com/developer/languages/ 找到对应 语言推荐包
在使用上查找的api 和使用方式基本和 mongoDB 直接通过shell 脚本操作的形式是一样的。只要去看mongoDB shell 一些curd 指令即可上手
shell
npm install mongodb
js
const { MongoClient, ObjectID } = require('mongodb')
const uri = 'mongodb://127.0.0.1:27017'
// 连接数据库
const client = new MongoClient(uri)
async function run() {
try {
// 连接数据库
await client.connect()
// 选择数据库
const db = client.db('test')
// 选择集合
const collection = db.collection('documents')
// 插入文档
// const insertResult = await collection.insertMany([
// {
// name: 'w',
// age: 18,
// hobbies: ['吃', '睡觉'],
// },
// {
// name: 'ww',
// age: 18,
// hobbies: ['吃', '睡觉'],
// },
// ])
// /**
// * 打印插入返回的信息
// *{
// * acknowledged: true,
// * insertedCount: 2,
// * insertedIds: {
// * '0': new ObjectId("64756522a8b1ea25fc59b62b"),
// * '1': new ObjectId("64756522a8b1ea25fc59b62c")
// * }
// *}
// * */
// console.log(insertResult)
// 查询文档
// 查看
/**
* 注意的是 collection.find({}).toArray() 是一个整体 分开写的话
* const findResult = collection.find({})
* console.log( await findResult.toArray())
*/
// const findResult = await collection.find({}).toArray()
// console.log(findResult)
// 只查看一条
// const oneFindResult = await collection.findOne({ name: 'w' })
// console.log(oneFindResult)
// 删除文档时候要注意使用 id 时候需要使用 ObjectID 包裹
// const ret = await collection({
// _id: ObjectID('5fa5164f95060000060078b1')
// })
// console.log(ret)
// 更新文档 使用参看mongodb 语法用法
const ret = await collection.updateOne(
{
_id: ObjectID('5fa5164f95060000060078af'),
},
{
$set: {
qty: 100,
},
}
)
} catch (e) {
console.log(e)
} finally {
// 关闭数据库连接
await client.close()
}
}
run()
// 开始连接
// client.connect().then(() => {
// // 连接成功了
// }).catch(() => {
// console.log('连接失败了')
// })
使用 mongoose
Mongoose 是一个对象文档模型库,官网 http://www.mongoosejs.net/
js
//1. 安装 mongoose
//2. 导入 mongoose
const mongoose = require('mongoose');
//设置 strictQuery 为 true你可以将 Mongoose 的 strictQuery 选项设置为 true,这将强制 Mongoose
// 检查查询条件中的所有字段是否已定义。如果查询条件中存在未定义的字段,则 Mongoose 会引发一个错误
mongoose.set('strictQuery', true);
//3. 连接 mongodb 服务 数据库的名称
mongoose.connect('mongodb://127.0.0.1:27017/bilibili');
//4. 设置回调
// 设置连接成功的回调 once 一次 事件回调函数只执行一次
mongoose.connection.once('open', () => {
console.log('连接成功');
// app.listen(8080);
});
// 设置连接错误的回调
mongoose.connection.on('error', () => {
console.log('连接失败');
});
//设置连接关闭的回调
mongoose.connection.on('close', () => {
console.log('连接关闭');
});
//关闭 mongodb 的连接
// setTimeout(() => {
// mongoose.disconnect();
// }, 2000)