你们可以发现,为什么下面的批量查询是行不通的。我没有得到任何错误,它只是简单地不执行对数据库的修改。当我执行使用猫鼬的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 })
谢谢!
问题是在userId
我经过一个string
,但它需要一个ObjectId