无法使用MongoDB更新嵌套对象值
我试图更新mongoDB文档中的一个值,但它没有更新任何内容。下面让我解释一下我的代码无法使用MongoDB更新嵌套对象值,mongodb,mongoose,Mongodb,Mongoose,我试图更新mongoDB文档中的一个值,但它没有更新任何内容。下面让我解释一下我的代码 const Product = new Schema({ StoreCode: { type: String}, ProductName : { type: String}, CouponRules: [ { CouponId: String, CouponCode: String, Co
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数组中,而不是直接使用变量优惠券
const result=productsCollection.update(
{u id:objectId},{$push:{CouponRules:优惠券},{multi:true}
);
否,同一问题。请检查下面的答案,因为您不应使用pro
,而应直接使用优惠券。让我知道它是否有效。你想在这里做什么?您是完全用新数组替换CouponRules
,还是将新对象推送到现有的CouponRules
数组?您还可以执行productsCollection.find({u id:objectId})
&如果您要取回文档,请告诉我!!它也会产生同样的问题。请尝试更改此const objectId=isObjectID(元素id)代码>到const objectId=objectId(元素.\u id)代码>