本质上,我正在尝试运行以下查询,因为它在命令行运行时返回正确的结果。
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"
}],
}
帮助!