1

リポジトリ クラスからのクエリに問題があります。

mongodb にはこの結果が必要です

db.RequestsPictures.find({ 
    "picture.$id": {
        "$in":[
            ObjectId("5013a65dd1853eb02c000000"), 
            ObjectId("5013a47dd1853e4919000001")
        ] 
    }
}).sort([ ]);

このクエリはMongoDBで正常に動作しますが、QueryBuilder.

このコードをテストすると、教義は悪い引用符を設定します

   $ids = array(
        'ObjectId("5013a65dd1853eb02c000000")',
        'ObjectId("5013a47dd1853e4919000001")'
    );

    $ids = implode(',', $ids);
    return $this->createQueryBuilder()
        ->field('picture.$id')
        ->in(array($ids))
        ->getQuery()
        ->execute()
        ->toArray();

このコードの結果:

db.RequestsPictures.find({ 
    "picture.$id": {
        "$in": [         
            "ObjectId("5013a65dd1853eb02c000000"),      
            ObjectId("5013a47dd1853e4919000001")" 
        ] 
    }
}).sort([ ]);

[前後の引用符]は不要です。

で自動引用符を無効にする方法を教えてくださいQueryBuilder

4

1 に答える 1

3

ソリューション:

 $ids = array(
    new \MongoId('5013a65dd1853eb02c000000'),
    new \MongoId('5013a47dd1853e4919000001')
);

return $this->createQueryBuilder()
            ->field('picture.$id')
            ->in($ids)
            ->getQuery()
            ->execute()
            ->toArray();
于 2012-07-30T16:30:58.077 に答える