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