如何在猫鼬中查询findOne(),以便获得满足特定条件的文档数组子集?

用户名

当我查询这个

const pendingOfThisShop = await ShopProfile.findOne({ shop: req.shop.id, "shopsAffiliate.status":"pending" },{ shopsAffiliate: 1, _id: 0 }

我得到这样的物体

{
"shopsAffiliate": [
    {
        "status": "approved",
        "_id": "5db315a6de255a4444b0987b",
        "affiliateId": "5db31263a362ed4ed84c7ad5"
    },
    {
        "status": "pending",
        "_id": "5db315c5de255a4444b0987d",
        "affiliateId": "5db2b4713db4101e48836f0a"
    }
]}

我同时获得状态:“已批准”和状态:“待处理”。我只想在shopAffiliate数组中获得状态为“待处理”的那些对象。我该怎么办?

优素福

我同时获得状态:“已批准”和状态:“待处理”

您的查询返回了预期的结果。

shopsAffiliate是一组嵌套文档。shopsAffiliate本身是ShopProfile集合内文档的一部分您的查询将检查是否ShopProfile满足以下两个条件的任何文档

  1. shop: req.shop.id
  2. "shopsAffiliate.status":"pending"

当找到任何符合上述两个条件的文档时,它将返回整个文档不在乎shopsAffiliate匹配文件数组中是否有其他文件具有pending状态,它只需要shopsAffiliate具有pending状态的数组中找到至少1个文件,一旦找到一个,就返回整个文件

我只想在shopAffiliate数组中获得状态为“待处理”的那些对象。我该怎么办?

您可以使用聚合操作获得所需的结果

const pendingOfThisShop = await ShopProfile.aggregate([
      {
          $match: {
              shop: req.shop.id,
              "shopsAffiliate.status": "pending"
          }
      },
      {
          $unwind: "$shopsAffiliate"
      },
      {
          $match: { "shopsAffiliate.status": "pending" }
      }
]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在特定条件下用猫鼬获得不同的物体?

如何根据特定条件在猫鼬验证中创建错误数组?

如何在MongoDB中查询特定条件的数组

查询猫鼬中数组字段条件的文档

猫鼬查询FindOne与数组

从猫鼬的findOne查询中获取子文档的_id

如何返回满足特定条件的会话子集?

猫鼬如何通过findOne在文档中获取嵌套对象

如何在猫鼬中查询嵌套数组

猫鼬:批量更新,但仅在满足特定条件时才更新记录

仅在满足特定条件时使用$ in运算符-猫鼬

如何在findOne中过滤猫鼬中的嵌套数组而无需嵌套对象

如何获得满足特定条件的$ Matches索引的索引?

如何获得满足特定条件的行熊猫

如何选择查询中特定行满足特定条件的所有行?

猫鼬如何使用位置运算符从特定条件的双嵌套数组中提取并返回新结果

获取匹配文档的总数并在满足特定条件的子集中进行计数

如何在Excel中返回匹配特定条件的数组?

如何保持检查数组直到满足特定条件

查询父级时如何获取猫鼬子文档数组中的聚合值总和?

猫鼬中的条件查询

如何在满足特定条件之前停止程序?

排除满足特定条件的元素的查询

如何在猫鼬数组内推子文档?

满足特定条件时如何在Angular5 / HTML中隐藏链接

如何在Python的Multiindex列中串联满足特定条件的Pandas数据框

如何在R中只留下满足特定条件的行

如何在子文档数组节点猫鼬中推送多个对象

如何在一个数组猫鼬中存储不同的子文档?