2015-12-02 36 views
1

有人知道我可以在Symfony2中找到關於Mongodb QueryBuilder的一些信息嗎?也許一些例子或一些教程。 我GOOGLE了這個問題,但沒有找到足夠好的東西.. 更具體地說,我想檢索基於嵌入式文檔的文檔中的字段。 下面是文檔的示例:Mongodb&Symfony QueryBuilder

{ 
"name":"Foo", 
"age":"25", 
"gender":"Male", 
"products":[ 
     { 
      "name":"Apple", 
      "price":"12.00", 
      "date":"2015-12-02" 
     }, 
     { 
      "name":"Banana", 
      "price":"9.00", 
      "date":"201-11-31" 
     }, 
] 

}

我想要檢索基於在產品陣列日期的名稱爲「foo」。 目前我使用distinct()來列出產品中的所有字段。

+0

http://doctrine-orm.readthedocs.org/project s/doctrine-mongodb-odm/en/latest/reference/query-builder-api.html – malcolm

+0

感謝Malcolm,我一直在那個頁面上,但是我想要一些更復雜的例子,如果它當然存在的話:D –

+0

我建議你改變你的問題,如何實現一些具體的查詢,因爲現在,如果這個問題應該被關閉或者沒有,這是爭論的問題: -/ – stevenll

回答

1

Simple doctrine mongodb example for EmbedMany in symfony

假設一個League可能有一個或多個Team太它是一個Embed Many像你的情況。上面是完整的例子。如果你想要更多的信息,那麼我認爲first 5 posts就足夠了。

示例用法

->findOneByProperty('name', 'Premiership') 

REPO

use Doctrine\ODM\MongoDB\DocumentRepository; 

class LeagueRepository extends DocumentRepository 
{ 
    /** 
    * @param string $field 
    * @param string $data 
    * 
    * @return array|null|object 
    */ 
    public function findOneByProperty($field, $data) 
    { 
     return 
      $this->createQueryBuilder('League') 
       ->field($field)->equals($data) 
       ->getQuery() 
       ->getSingleResult(); 
    } 
} 

僞數據

db.getCollection('league').find({}) 
/* 1 */ 
{ 
    "_id" : ObjectId("564fa07add576ebcf90041ac"), 
    "name" : "Super Lig", 
    "createdAt" : ISODate("2015-11-20T22:36:42.000Z") 
} 

/* 2 */ 
{ 
    "_id" : ObjectId("564fa081dd576ebbf90041ad"), 
    "name" : "Premiership", 
    "createdAt" : ISODate("2015-11-20T22:36:49.000Z"), 
    "updatedAt" : ISODate("2015-11-20T22:37:33.000Z"), 
    "teams" : [ 
     { 
      "_id" : ObjectId("564fa0a6dd576ef2f80041ad"), 
      "name" : "Arsenal", 
      "createdAt" : ISODate("2015-11-20T22:37:26.000Z") 
     }, 
     { 
      "_id" : ObjectId("564fa0addd576ebaf90041ad"), 
      "name" : "Liverpool", 
      "createdAt" : ISODate("2015-11-20T22:37:33.000Z") 
     } 
    ] 
} 
+0

Wonderfull!非常感謝你。 –

+0

沒問題,盡情享受吧。如果它解決了您的問題,請接受它,以便其他人可以從中受益。謝謝 – BentCoder

+0

根據聯盟文檔給出的例子,你如何顯示團隊名稱的小枝,我試圖做$ var.products但不工作,因爲它是一個數組。 Symfony如何處理這個問題?我只能獲得父文檔字段(姓名,年齡性別等),但不能包含產品字段 –

相關問題