你们能找出为什么以下批量查询不起作用的原因吗?我没有收到任何错误,只是没有在数据库上执行更改。当我使用猫鼬的findOneAndUpdate方法执行相同的查询时,效果很好。
请参见下面的代码:
var bulk = models.Cart.collection.initializeOrderedBulkOp()
bulk.find({
$and: [
{ $or: [{ userId }, { sessionId }] },
{ 'cartProducts.productId': { $ne: mongoose.Types.ObjectId(args.data.productId) } },
{ checkedOut: false }
]
}).updateOne({
$push: {
cartProducts: { productId: mongoose.Types.ObjectId(args.data.productId), quantity: args.data.quantity }
}
})
bulk.find({
$and: [
{ $or: [{ userId }, { sessionId }] },
{ 'cartProducts.productId': mongoose.Types.ObjectId(args.data.productId) },
{ checkedOut: false }
]
}).updateOne({
$set: {
'cartProducts.$.quantity': args.data.quantity
}
})
bulk.execute()
同样,在执行findOneAndUpdate
时执行相同的查询也很好
models.Cart.findOneAndUpdate({
$and: [
{ $or: [{ userId }, { sessionId }] },
{ 'cartProducts.productId': { $ne: mongoose.Types.ObjectId(args.data.productId) } },
{ checkedOut: false }
]
}, {
$push: {
cartProducts: { productId: mongoose.Types.ObjectId(args.data.productId), quantity: args.data.quantity }
}
},
{ new: true })
谢谢!
答案 0 :(得分:0)
问题出在userId
,我正在通过一个string
,但它需要一个ObjectId