本质上,我试图运行以下查询,因为它在命令行运行时返回正确的结果。
db.order_in_progress.find({ "orderProducts.carrierAccount.$id" : "50db39141311fa9421000000" });
我无法使用doctine2创建正确的查询。我目前的查询如下:
$qb = $this->createQueryBuilder();
$qb->find($this->getClassName());
$qb->field('orderProducts.carrierAccount.$id')->equals(new \MongoId($carrierAccount->getId()));
return $qb->getQuery()->execute();
导致以下查询运行。
db.order_in_progress.find({ "orderProducts.carrierAccount": ObjectId("50db39141311fa9421000000") })
如果我删除\ MongoID内容,我最终会得到以下查询。这更接近,但它正在截断字段名称的“$ id”部分。
db.order_in_progress.find({ "orderProducts.carrierAccount": "50db39141311fa9421000000" })
相关的父文档(我查询的文档)如下所示。 (我删除了不相关的字段)
{
"_id" : 148,
"orderProducts" : [{
"carrierAccount" : {
"$ref" : "carrier_account",
"$id" : ObjectId("50db39141311fa9421000000"),
"$db" : "dev"
},
}, {
"carrierAccount" : {
"$ref" : "carrier_account",
"$id" : ObjectId("50db39141311fa9421000000"),
"$db" : "cerberus_dev"
}],
}
帮助!