MongoDB的 - 批量查找和updateOne工作不正常

问题描述 投票:0回答:1

你们可以发现,为什么下面的批量查询是行不通的。我没有得到任何错误,它只是简单地不执行对数据库的修改。当我执行使用猫鼬的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 })

谢谢!

node.js mongodb mongoose
1个回答
0
投票

问题是在userId我经过一个string,但它需要一个ObjectId

© www.soinside.com 2019 - 2024. All rights reserved.