【问题标题】:Get mongoose data when matched all object in array?匹配数组中的所有对象时获取猫鼬数据?
【发布时间】:2022-01-16 08:46:10
【问题描述】:

我到处搜索,但没有得到任何解决方案。有人可以帮忙吗?

我有一个像图像这样的猫鼬对象-

在这里,我还从前端获得了一系列产品,例如-

products: [
    { product: "61adbb70207f1002fc7c5c2a", quantity: 1 }
    { product: "61adbb52207f1002fc7c5c27", quantity: 2 }
  ]

当所有产品都与查询匹配时,我必须找到猫鼬数据。

这是我的练习-

         const order = await Order.exists({
            products: {
                $elemMatch: {
                        product: {
                            $all: input.products.map(item => item.product)
                        }
                 }
            },
            user: reqUserInfo._id
        });

更多描述--

当我从前端得到这个时-

      products: [
        { product: "61adbb70207f1002fc7c5c2a", quantity: 1 }
        { product: "61adbb52207f1002fc7c5c27", quantity: 2 }
      ]

那么它应该返回true

当我得到这个时-

          products: [
            { product: "61adbb70207f1002fc7c5c2a", quantity: 1 }
          ]

它也应该返回true

但是当我得到这个时-

      products: [
        { product: "61adbb70207f1002fc7c5c2a", quantity: 1 }
        { product: "61b3786ba2123f03dc6da691", quantity: 2 } // This not in the database
      ]

或者这个

      products: [
        { product: "61b37850a2123f03dc6da68e", quantity: 1 }
        { product: "61b3786ba2123f03dc6da691", quantity: 2 }
        //This two are not in the database
      ]

那么应该返回false

我该怎么做?请帮帮我。

【问题讨论】:

    标签: javascript mongodb mongoose


    【解决方案1】:

    试试

            const order = await Order.exists({
                "products.product": {
                    $all: input.products.map(item => item.product)
                },
                user: reqUserInfo._id
             });
    

    它现在应该可以工作了!

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 2022-01-16
      • 1970-01-01
      • 2015-12-28
      • 2021-05-06
      • 2022-09-27
      • 2017-10-09
      • 2019-07-06
      • 2021-09-23
      相关资源
      最近更新 更多