带和的MongoDB查询

时间:2014-07-16 16:10:42

标签: mongodb mongodb-query

我有一个简单的文档设置:

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

实际上我只是想查询这些文件,以获得每个VG或城镇中的销售清单列表,这无关紧要。此外,查询应该将每种产品的金额相加并将其交还给我。

我知道我在用SQL语言思考,但事实确实如此。

这个想法可能就在这里:

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

这里最难的一点是,我有5个不同的VG值,并且它可能最多为5个Artikel,并且在一个列表中的数量。

所以希望你能在这里帮助我。因为我的英语不好以及我的书写蒙哥技能。

1 个答案:

答案 0 :(得分:1)

如果Artikel1总是" Sprite"和Artikel2 - " Fanta",然后你可以尝试这个:

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"}}})