1

我正在使用带有 mongoDB 的 Akeneo 1.4 系统,并且有多个数据关联。现在我想查询具有关联类型的产品,其中包含特定产品。mongo 数据在数据库中如下所示:

"associations": [
{
  "_id": ObjectId("565867d7c6e41f4408d0068f"),
  "associationType": 5,
  "groupIds": [

  ],
  "owner": {
    "$ref": "pim_catalog_product",
    "$id": ObjectId("56560373c6e41f5b688b47d7"),
    "$db": "akeneo_pim"
  },
  "products": [
    {
      "$ref": "pim_catalog_product",
      "$id": ObjectId("56560372c6e41f5b688b4583"),
      "$db": "akeneo_pim"
    }
  ]
},
{
  "_id": ObjectId("565867d7c6e41f4408d00690"),
  "associationType": 6,
  "groupIds": [

  ],
  "owner": {
    "$ref": "pim_catalog_product",
    "$id": ObjectId("56560373c6e41f5b688b47d7"),
    "$db": "akeneo_pim"
  },
  "products": [

  ]
}
]

我知道如何使用 in 查询 products 数组:

$queryBuilder->addOr(
    $queryBuilder->expr()->field('associations.products.$id')->in(array(new \MongoId($product->getId())))
);

但我不知道如何只查询具有特定关联类型(例如 5)和给定 productId 的产品。我可以在 Doctrine ODM 中做类似子查询的事情吗?我已经尝试了多个 QueryBuilder 对象,但没有奏效。

4

0 回答 0