2012-07-29 32 views
1

我有一個來自存儲庫類的查詢問題。symfony2 mongodb參考查詢字段() - >在()

我需要這個結果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中的自動引號嗎?

回答

3

解決方案:

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

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