2014-07-16 113 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