MongoDB-$ [<identifier>]运算符不起作用

时间:2019-02-27 14:48:27

标签: node.js mongodb mongoose

我目前正在尝试执行以下操作,但出现错误。你们有没有遇到过同样的错误?见下文:

  1. 接收两个参数productIdquantity
  2. 查询MongoDB数据库并找到购物车
  3. 如果它不存在,则创建它并将参数传递到products数组
  4. 如果确实存在,则检查products数组是否具有productId的{​​{1}},是否更新数量,如果不更新则不添加新对象< / li>

参数示例:

param.productId

购物车模式:

{ productId: 5c75429600177d1c184c6541, quantity: 5 }

更新查询:

{
    userId: mongoose.ObjectId,
    sessionId: String,
    products: [
        {
            productId: mongoose.ObjectId,
            quantity: Number
        }
    ]
}

错误

const cart = await models.Cart.findOneAndUpdate({
    $or: [
        { $and: [ { userId }, { checkedOut: false } ] },
        { $and: [ { sessionId }, { checkedOut: false } ] }
    ]
    }, {
    $set: {
        userId,
        sessionId,
        "products.$[product].quantity": quantity
        }
    }, { 
    arrayFilters: [ { "product.productId": { $eq: productId } } ],
    upsert: true, 
    new: true, 
    runValidators: true, 
    setDefaultsOnInsert: true
})

0 个答案:

没有答案