如何从 MongoDb 中的不同文档中获取特定的数组对象

编程入门 行业动态 更新时间:2024-10-04 01:17:54

如何从 MongoDb 中的不同文档中获取特定的<a href=https://www.elefans.com/category/jswz/34/1771288.html style=数组对象"/>

如何从 MongoDb 中的不同文档中获取特定的数组对象

我遇到问题了。问题是,我有多个集合,每个集合都有维度字段,其中包含不同维度的对象数组。该系列如下所示。

现在我只需要通过 slug 返回数组中的特定对象,id 可以来自多个文档。

我一直在使用下面的查询进行过滤,但它返回给我整个文档。这是我的查询

db.dimensions.find({
    "dimension.dimensionChildSlug": { $in: ["spring", "formal"] } 
}).select({ dimension: 1 })

但是预期的结果应该是这样的,只有数组中与 slug 匹配的项目才会被检索。

[
    {
      "isDeleted": false,
      "isArchived": false,
      "_id": {
        "$oid": "6423b71df226c91a55d756bb"
      },
      "dimensionChild": "Spring",
      "dimensionChildToLower": "spring",
      "dimensionChildSlug": "spring"
    },
{
      "isDeleted": false,
      "isArchived": false,
      "_id": {
        "$oid": "6423cde4f4db0d397b22390b"
      },
      "dimensionChild": "Wedding",
      "dimensionChildToLower": "wedding",
      "dimensionChildSlug": "wedding"
    }
]

请找收藏

[{
  "_id": {
    "$oid": "6423b6faf226c91a55d756b9"
  },
  "isDeleted": false,
  "isArchived": false,
  "dimensionType": "Collections",
  "dimensionTypeSlug": "collections",
  "dimensionTypeToLower": "collections",
  "dimension": [
    {
      "isDeleted": false,
      "isArchived": false,
      "_id": {
        "$oid": "6423b71df226c91a55d756bb"
      },
      "dimensionChild": "Spring",
      "dimensionChildToLower": "spring",
      "dimensionChildSlug": "spring"
    },
    {
      "isDeleted": false,
      "isArchived": false,
      "_id": {
        "$oid": "6423b723f226c91a55d756bc"
      },
      "dimensionChild": "Summer",
      "dimensionChildToLower": "summer",
      "dimensionChildSlug": "summer"
    }
  ],
  "createdAt": {
    "$date": "2023-03-29T03:56:42.370Z"
  },
  "updatedAt": {
    "$date": "2023-03-29T03:57:23.419Z"
  },
  "__v": 0
},{
  "_id": {
    "$oid": "6423cddbf4db0d397b22390a"
  },
  "isDeleted": false,
  "isArchived": false,
  "dimensionType": "Occassions",
  "dimensionTypeSlug": "occassions",
  "dimensionTypeToLower": "occassions",
  "dimension": [
    {
      "isDeleted": false,
      "isArchived": false,
      "_id": {
        "$oid": "6423cde4f4db0d397b22390b"
      },
      "dimensionChild": "Wedding",
      "dimensionChildToLower": "wedding",
      "dimensionChildSlug": "wedding"
    },
    {
      "isDeleted": false,
      "isArchived": false,
      "_id": {
        "$oid": "6423ce0af4db0d397b22390c"
      },
      "dimensionChild": "Business Casual",
      "dimensionChildToLower": "business casual",
      "dimensionChildSlug": "business-casual"
    },
    {
      "isDeleted": false,
      "isArchived": false,
      "_id": {
        "$oid": "6423ce18f4db0d397b22390d"
      },
      "dimensionChild": "Formal",
      "dimensionChildToLower": "formal",
      "dimensionChildSlug": "formal"
    }
  ],
  "createdAt": {
    "$date": "2023-03-29T05:34:19.300Z"
  },
  "updatedAt": {
    "$date": "2023-03-29T05:35:20.294Z"
  },
  "__v": 0
}]

谁能帮我解决这个问题。

谢谢。

回答如下:

我想你想用

$filter

db.collection.aggregate([
  {$match: {
      "dimension.dimensionChildSlug": {$in: ["spring", "formal"]}
  }},
  {$project: {
      dimension: {$filter: {
          input: "$dimension",
          cond: {$in: ["$$this.dimensionChildSlug", ["spring", "formal"]]}
      }}
  }}
])

在游乐场示例中查看它是如何工作的

更多推荐

如何从 MongoDb 中的不同文档中获取特定的数组对象

本文发布于:2024-05-30 04:14:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770157.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   对象   文档   MongoDb

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!