mongodb - 无法使用 MongoDB 更新嵌套对象值
问题描述
我正在尝试从 mongoDB 文档中更新一个值,但它没有更新任何内容。让我在下面解释我的代码。
const Product = new Schema({
StoreCode: { type: String},
ProductName : { type: String},
CouponRules: [
{
CouponId: String,
CouponCode: String,
CouponValue: Number,
Description: String,
SKU: String,
Category: String,
CouponType: String,
CouponCount: Number,
StartDate: String,
EndDate: String,
IsActive: String
}
]
})
以上是我的猫鼬模式。
const productsCollection = loadMongoModel(PRODUCTS_COLLECTION);
data.tableInfo.forEach(element => {
let arr = [];
const coupon = {
CouponId: Coupon._id,
CouponCode: data.data.CouponCode,
CouponValue: data.data.CouponValue,
Description: data.data.CouponDescription,
SKU: '',
Category: data.data.CouponCategory,
CouponType: data.data.Type,
CouponCount: data.data.Count,
StartDate: data.data.StartDate,
EndDate: data.data.EndDate,
IsActive: data.data.IsActive
}
arr.push(coupon);
if (element.checked == true) {
const objectId = isObjectID(element._id);
const pro = {
CouponRules : arr
}
const result = productsCollection.update( { _id : objectId}, { $set : pro }, { multi:true });
}
});
在这里,我试图只添加CouponRules
一个新行的值,但无法做到这一点。
解决方案
您必须使用$push
向CouponRules数组添加新行,而不是直接pro
使用变量coupon
。
const result = productsCollection.update(
{ _id : objectId}, {$push: { CouponRules : coupon }}, { multi:true }
);
推荐阅读
- python - 验证来自 Spring Boot 应用程序的令牌 - [OAuth2]
- vue.js - Laravel Inertia 中的 Vue mixins
- docker - 如何在 Docker 中更改 Python 默认版本?
- python - PyQt5 在线编辑需要帮助
- javascript - React setState 未在 GET 请求上更新,有时有效
- android - Kotlin 中的 UICollectionViews?
- javascript - Highcharts 对系列数据进行排序并重绘
- git - 无法使用 ssh 使用 git 从 KIE 工作台克隆存储库
- c++ - C++ 内存过量使用 Linux
- excel - 有没有办法通过 Selenium VBA 和 HTML 表单元素登录?