0

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

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

帮助!

4

0 回答 0