首先我们总得下载mongo的库吧哈哈哈,以防有萌新看到帖子然后不知道
要在Node.js中使用MongoDB,您需要安装MongoDB Node.js驱动程序。您可以通过以下步骤来下载和安装MongoDB Node.js驱动程序:
- 打开终端或命令提示符。
- 进入您的项目目录。
- 运行以下命令来初始化npm(如果尚未初始化):
npm init
- 之后,运行以下命令来安装MongoDB Node.js驱动程序:
npm install mongodb
完成上述步骤后,您将成功下载并安装了MongoDB Node.js驱动程序。
接下来,在您的Node.js代码中,您可以使用require
语句导入已安装的库。例如:
const MongoClient = require('mongodb').MongoClient;
然后,您可以使用MongoClient
对象与MongoDB进行连接,并执行各种数据库操作。
请注意,为了成功连接到MongoDB数据库,请确保已经正确配置了连接字符串、主机名、端口号和凭据(如果适用)。
首先这是我的数据库结构:
{ //文档对象
id: ObjectId('1913249165465165f5zx6ca4s')
commodityclass:[ //数组
{ //对象
ClassId: 1 //数字类型的哦
commodity: [ //数组
{ //对象1
GOODSID:101,
RMB:99.99
},
{ //对象2
GOODSID:102,
RMB:99.99
}
]
},
{
ClassId: 2 //数字类型的哦
commodity: [ //数组
{ //对象1
GOODSID:101,
RMB:99.99
},
{ //对象2
GOODSID:102,
RMB:99.99
}
]
}
]
}
在node建立连接你的mongo数据库
const MongoClient = require('mongodb').MongoClient;
//填自己的服务器mongo的账号和密码和端口号哦,我的mongo是自己的服务器里的!
const uri = "mongodb://账号:密码@localhost:端口号/?authSource=admin"
//这是可以找到文档id的关键哦,就是使用ObjectId
const { ObjectId } = require('mongodb');
// 连接数据库的选项
const options = {
useNewUrlParser: true,
useUnifiedTopology: true,
};
//我的形参分别是dbName:数据库的名字,collectionName集合的名字,documentId:要指定的文档的id,classId: 要指定的id,newData要更新的数据
const upgoodsData = function (dbName, collectionName, documentId, classId, newData) {
return new Promise((resolve, reject) => {
MongoClient.connect(uri, options, async function (err, client) {
if (err) {
return reject(err);
}
try {
const collection = client.db(dbName).collection(collectionName);
// 查询对应的id的文档和类id是不是存在再进行操作!更安全
const category = await collection.find({ "_id": ObjectId(documentId), "ClassId": classId });
if (!category) {
throw new Error('找不到指定的商品类!');
}
// 更新文档,将新数据添加到指定类ID的商品数组中
const DataPush = await collection.updateOne({ "_id": ObjectId(documentId), "commodityclass.ClassId": classId }, {$push: { "commodityclass.$.commodity": newData }});
resolve(DataPush);
} catch (error) {
reject(error);
} finally {
client.close();
}
});
});
}
//做模块导出供接口代码导入使用
module.exports = {
upgoodsData
}
主要在这个代码的构成哦!
collection.updateOne({ "_id": ObjectId(documentId), "commodityclass.ClassId": classId }, {$push: { "commodityclass.$.commodity": newData }});
collection.updateOne({
{ 要查询的条件添加 } ,
{ 要操作的方式加对应的数组字段和数据 }
})