获取/定位另一个文档mongoose内数组中的文档

vi4fp9gy  于 2022-12-23  发布在  Go
关注(0)|答案(1)|浏览(160)

我的收藏中有此文档架构:

_id: 631059faf95beef06e70a2bf,
cart:[{product_Id: "62be9f370d6b1ded3097e026",qty: 1},{product_Id: "62be9f370d6b1ded3097e027", qty: 1}],
username: "lucas@admin.com",
password: "$2b$10$YSQKuxr1tzV7SlSanj2N3eiUMVnO1fiJpvS5ka8g2UYSwFPvgg/I2",
alias: "lucas123",
avatar: "56fdfc0c-d6ca-461f-be85-80eb37144301.jpeg",
admin: true,
__v:0

我所需要的是用mongoose通过product_Id来定位"cart"中的文档,这样我就可以更新数量并删除目标文档。现在,这是我用来处理查询的代码结构:

addProduct(userId, productToAdd) {
  return this.db
    .then((_) =>
      this.model.findOneAndUpdate(
        { _id: userId },
        { $push: { cart: productToAdd } }
      )
    )
    .then((resp) => {
      return resp;
    });
}

上面的一个工作正常,只是为了让你知道我的查询是如何构造的。
谢谢。

798qvoo8

798qvoo81#

我最后用JS做了,但我还是想知道怎么用 Mongoose 做:

addQty(userId, productId) { 
   return this.db.then( _ => this.model.findOne({ _id: userId })) 
   .then( resp => { 
       const index = resp.cart.findIndex( product => { 
           return product.product_Id === productId 
           }) 
           if(index !== -1) { 
               resp.cart[index].qty += 1 
           }

           return resp.save() 
})}

PD:也不知道你是否用相同的ID重新保存了一些东西,Mongo替换了它,不会像我想象的那样创建一个新文档。

相关问题