2014-07-16 81 views
0

我有一個簡單的文檔設置:MongoDB的查詢與和

{ 
    VG: "East", 
    Artikellist: { 
     Artikel1: "Sprite", 
     Amount1: 1, 
     Artikel2: "Fanta", 
     Amount2: 3 
    } 
} 

其實我只是想查詢這些文件以獲得在每個VG銷售articels,或許鎮,並不重要的列表。另外,查詢應該總結每種產品的金額並將其還給我。

我知道我在用SQL語言思考,但實際上就是這樣。

五月的想法是這樣的位置:

db.collection.aggregate([{ 
    $group: { 
     _id: { 
      VG: "$VG", 
      Artikel1: "$Artikellist.Artikel1", 
      Artikel2: "$Artikellist.Artikel2", 
      $sum: "$Artikellist.Amount1", 
      $sum: "$Artikellist.Amount2" 
     }, 
    } 
}]); 

這裏最難的一點,我對VG 5個不同的價值觀和它可能是最大的5 ARTIKEL和關於量的一個列表。

所以希望你能幫助我。 Sry爲我的壞英語和我的badder Mongo技能。

+0

$點心和喜歡將只與下地幹活同名。您應該在數組或集合中具有{「artikel」:「name」,「amount」:「20」}等對象。 –

回答

1

如果Artikel1始終是「雪碧」和Artikel2 - 「芬達」,那麼你可以試試這個:

db.test.aggregate({$group : { _id : {VG : "$VG", Artikel1 : "$Artikellist.Artikel1", Artikel2 : "$Artikellist.Artikel2"}, Amount1 : {$sum : "$Artikellist.Amount1"},Amount2 : {$sum : "$Artikellist.Amount2"}}}); 

如果Artikel1和Artikel2的值可以改變我建議改變文檔的結構說:

{ 
VG: "East", 
Artikellist: [ 
    { Artikel: "Sprite", 
     Amount: 1}, 
    { Artikel: "Fanta", 
    Amount: 3 } 
]} 

,然後用下面的辦法:

db.test.aggregate({$unwind : "$Artikellist"}, {$group : {_id : {VG : "$VG", Artikel : "$Artikellist.Artikel"}, Amount : {$sum : "$Artikellist.Amount"}}}) 
+0

感謝您的幫助:)按預期工作:) – user3845857