匹配 MongoDB 中嵌套子文档的嵌套数组

Posted

技术标签:

【中文标题】匹配 MongoDB 中嵌套子文档的嵌套数组【英文标题】:Matching nested array of nested subdocuments in MongoDB 【发布时间】:2021-05-01 06:23:42 【问题描述】:

我正在尝试创建一个匹配两个条件的查询。匹配特定的 userId 并匹配 Id 的范围。

示例文档可能如下所示:

我尝试通过添加userId 来使用find,然后使用MongoDB $in 运算符来匹配feature 列表(作为id)

  const featureIds = features.map(feature => feature._id)
    console.log(featureIds)
    const isFeatureExists = await this.userShopModel.find(
      userId,
      'items.feature':  $in: featureIds ,
    )
    console.log(isFeatureExists)

我也尝试过使用不同版本的aggregate,但没有任何运气。

任何 mongo 专家,谁能帮助我?

【问题讨论】:

您的屏幕截图中没有userId 字段.. 【参考方案1】:

使用 _id 进行过滤

const featureIds = features.map(feature => feature._id)
    console.log(featureIds)
    const isFeatureExists = await this.userShopModel.find(
      _id : userId,
      'items.feature':  $in: featureIds ,
    )
    console.log(isFeatureExists)

【讨论】:

以上是关于匹配 MongoDB 中嵌套子文档的嵌套数组的主要内容,如果未能解决你的问题,请参考以下文章

在 Gorilla Mux 中嵌套子路由器

MongoDB聚合查询 - 返回嵌套子文档中的所有项目

MongoDB通过***属性和嵌套数组键查找文档,并返回匹配文档的一部分

使用 arrayFilters 更新 MongoDB 中的嵌套子文档

在 CSS 中嵌套子选择器

ngx-bootstrap 下拉菜单在移动视图中嵌套子菜单