2014-06-26 31 views
0

的嵌套陣列上等於條件我得到這樣的文件:查找與學說ODM的文檔使用對象

{ 
    "_id" : ObjectId("54ad5c3b9a703a3c088b4567"), 
    "hard" : 750, 
    "coordinates" : { 
     "x" : 0.2388169910939489, 
     "y" : 0.7996551291084174 
    }, 
    "indicator" : 500, 

    "networkIdList" : { 
     "networkIdData" : [ 
      { 
       "networkId" : "abc123", 
       "type" : "SomeNetwork" 
      }, 
      { 
       "networkId" : "123asdf", 
       "type" : "AnotherNetWork" 
      }, 
      { 
       "networkId" : "abc123", 
       "type" : "OneMoreNetwork" 
      } 
     ] 
    } 
} 

,我需要進行查詢,找到文件,具有「網絡ID」 =「ABC123 「AND」鍵入「=」SomeNetwork「。

我試圖與該指令:

$this->documentManager->createQueryBuilder('Mydocument')         ->field('networkIdList.networkIdData.$.networkGamingId')->equals('abc123')     ->field('networkIdList.networkIdData.$.type')->equals('') 
->getQuery() 
->execute()); 

但光標返回任何數據。

我也嘗試用

->where("function() {return this.networkIdList.networkIdData.$.networkGamingId == 'abc123'}") 

但在這種情況下,我得到了,說對象$沒有propierties錯誤。

回答

1

,我需要執行一個查詢查找具有「網絡ID」 =「ABC123」和「類型」 =「SomeNetwork」

$qb = $dm->createQueryBuilder('Foo') 
     ->field('networkIdList.networkIdData.networkId')->equals('abc123') 
     ->field('networkIdList.networkIdData.type')->equals('SomeNetwork'); 
+1

這解決了我的問題的文件,當我嘗試這是第一次,我內存不足,但這是由我的腳本中的另一條指令造成的 – Morgoth