我正在使用带有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())))
);
但我不知道如何仅查询具有特定associationType(例如5)AND且具有给定productId的产品。我可以在Doctrine ODM中执行类似子查询的操作吗?我已经尝试过多个QueryBuilder对象,但是没有用。