无法使用引用其他文档的Doctrine2查询MongoDB嵌入文档

时间:2012-12-26 19:46:19

标签: mongodb doctrine-orm doctrine-odm

本质上,我试图运行以下查询,因为它在命令行运行时返回正确的结果。

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"
      }],
}

帮助!

0 个答案:

没有答案