我正在使用带有 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 对象,但没有奏效。