MongoDB-批量查找和更新无法正常工作

时间:2019-02-03 19:53:30

标签: node.js mongodb mongoose

你们能找出为什么以下批量查询不起作用的原因吗?我没有收到任何错误,只是没有在数据库上执行更改。当我使用猫鼬的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 })

谢谢!

1 个答案:

答案 0 :(得分:0)

问题出在userId,我正在通过一个string,但它需要一个ObjectId