symfony2 mongodb引用查询字段() - > in()

时间:2012-07-29 17:21:09

标签: mongodb symfony doctrine

我遇到了来自存储库类的查询问题。

我需要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

中禁用自动引号

1 个答案:

答案 0 :(得分:3)

解决方案:

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

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