如果你不熟悉MongoDB,请查看我们关于其基础知识以及如何安装和使用它的指南:)
我们将使用官方的mongodb npm包。如果你已经有了一个正在进行的Node.js项目,请用以下方式安装它
如果你从头开始,用你的终端创建一个新的文件夹,运行npm init -y ,启动一个新的Node.js项目,然后运行npm install mongodb 命令。
连接到MongoDB
你需要mongodb 包,并从中获得MongoClient对象。
const mongo = require('mongodb').MongoClient
创建一个指向MongoDB服务器的URL。如果你在本地使用MongoDB,该URL将是类似于mongodb://localhost:27017 ,因为27017 是默认端口。
const url = 'mongodb://localhost:27017'
然后使用mongo.connect() 方法来获取对MongoDB实例客户端的引用。
mongo.connect(url, {
useNewUrlParser: true,
useUnifiedTopology: true
}, (err, client) => {
if (err) {
console.error(err)
return
}
//...
})
现在你可以使用client.db() 方法选择一个数据库。
const db = client.db('kennel')
创建和获取一个集合
你可以通过使用db.collection() 方法获得一个集合。如果该集合还不存在,它就会被创建。
const collection = db.collection('dogs')
在一个集合中插入数据 a Document
在app.js中添加以下函数,该函数使用insertOne() 方法来添加一个对象dogs 集合。
collection.insertOne({name: 'Roger'}, (err, result) => {
})
你可以使用insertMany() ,传递一个数组作为第一个参数,添加多个项目。
collection.insertMany([{name: 'Togo'}, {name: 'Syd'}], (err, result) => {
})
查找所有的文档
在集合上使用find() 方法来获取所有添加到集合中的文档。
collection.find().toArray((err, items) => {
console.log(items)
})
查找一个特定的文档
传递一个对象给find() 方法,根据你需要检索的内容来过滤集合。
collection.find({name: 'Togo'}).toArray((err, items) => {
console.log(items)
})
如果你知道你将得到一个元素,你可以通过调用findOne() ,跳过游标的toArray() 转换。
collection.findOne({name: 'Togo'}, (err, item) => {
console.log(item)
})
更新一个现有的文档
使用updateOne() 方法来更新一个文档。
collection.updateOne({name: 'Togo'}, {'$set': {'name': 'Togo2'}}, (err, item) => {
console.log(item)
})
删除一个文档
使用deleteOne() 方法来删除一个文档。
collection.deleteOne({name: 'Togo'}, (err, item) => {
console.log(item)
})
关闭连接
一旦你完成了这些操作,你就可以在客户端对象上调用close() 方法。
使用承诺或async/await
我发布了所有这些使用回调语法的例子。这个API也支持承诺(和async/await)。
比如说这个
collection.findOne({name: 'Togo'}, (err, item) => {
console.log(item)
})
可以使用承诺。
collection.findOne({name: 'Togo'})
.then(item => {
console.log(item)
})
.catch(err => {
console.error(err)
})
或async/await。
const find = async () => {
try {
const item = await collection.findOne({name: 'Togo'})
} catch(err => {
console.error(err)
})
}
find()