我写了一个简单的updateMany语句,在一个名为products的集合中添加一个now字段. 由于新产品可能没有onSale属性,因此可能会在这些产品现在符合onSale条件时首次添加. 但是,已经onSale的旧产品需要使用onSale:false进行更新.这是我的更新声明.我需要在产品销售结束时更新onSale:false. 我还注意到8.0.3版不再接受{multi:true}.
public async updateProductsToOnSale(productIds: Array<string>, onSaleStatus: boolean): Promise<UpdateWriteOpResult | undefined> {
try {
return await Product.updateMany(
{
_id: {
$in: productIds
}
},
{ $set: { onSale: onSaleStatus } }, )
} catch (error) {
this.logger.error(error,`Update Failed for productIds ${productIds}`);
}
}
我看到的行为是,有时不更新任何行.然而,当我打印出匹配的计数时,我得到matchedCount:1,即使更新不起作用.此更新是否适用于设置新的待售房产以及现有的待售房产?如果不是,有没有办法通过一次更新Many来实现这一点,或者我是否需要两个,一个用于现有的待售房产,另一个用于设置新的待售房产?谢谢