javascript - 如何根据字符串输入更新一个 Mongo 文档 Node.js?
问题描述
我有下面的异步功能。DeviceStatus
是具有SerialNumber
定义和NumberOfRetries
定义属性的 Mongo 设备集合。我想将 aserialNumber
和retries
. serialNumber
是已知在集合中的字符串。retries
是一个表示小于 10 的 int 的字符串。在下面的异步函数中,我想读取该retries
值,将其加 1,然后使用相同的值更新 mongo 文档serialNumber
static async incrementNumberOfRetries(serialNumber, retries){
const retriesInt = parseInt(retries);
const accumulatedRetriesInt = retriesInt + 1;
const accumulatedRetriesString = accumulatedRetriesInt.toString();
try {
await DeviceStatus
.updateOne({
"SerialNumber": serialNumber
},
{
$set: {
"NumberOfRetries" : accumulatedRetriesString
}
})
} catch(error) {
console.log(error)
}
}
我不完全确定我在这里做错了什么。我知道前 3 行是正确的,并且没有发现任何错误。但是在NumberOfRetries
集合中没有正确设置。最初,它被设置为 1,所以我测试了这个函数并且值没有改变。我的使用方式有问题updateOne
吗?如何传入变量来执行更新?
解决方案
要增加numberOfRetries
,您可以使用 MongoDB 更新运算符$inc
。
DeviceStatus.update({
serialNumber,
},
{
$inc: {
numberOfRetries: 1
}
})
在MongoDb Playground上查看一个工作示例
您的代码应如下所示
static async incrementNumberOfRetries(serialNumber, retries){
try {
await DeviceStatus
.update({
"SerialNumber": serialNumber
},
{
$inc: {
"NumberOfRetries" : 1
}
})
} catch(error) {
console.log(error)
}
}
推荐阅读
- ios - 如何使用 SwiftUI 在 NavigationView 中正确包含“添加项目”按钮?
- python - 为什么使用 `open(False)` 阅读有效?
- amazon-web-services - AWS Transcribe 无法正确识别我的文件的媒体格式
- sharepoint - 来自 Angular 的 JSOM/SP.js?
- javascript - 将 Promise 中的 resolve 函数分配给变量
- java - 为什么我会收到此 JsonObjectRequest 错误?我究竟做错了什么?
- javascript - 向服务器提交 HTML 表单(POST req)应返回动态 HTML
- wikipedia-api - 是否有用于简单维基百科的 API
- c - 有没有办法 typedef 一个函数来修改 C 中的参数?
- jquery - 使用 jquery 将顺序 ID 添加到父容器中的 div