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 回答