sql >> Databáze >  >> NoSQL >> MongoDB

Jak seskupit dohromady, ale také zobrazit další pole pomocí Mongo?

Nezveřejnili jste původní strukturu dokumentu.

Document Structure:

{
    "_id" : ObjectId("50b59cd75bed76f46522c471"),
    "comment_id" : 61,
    "post_id" : 29,
    "comments" : [
                   {
                       "type" : "accepted",
                       "like" : 3
                   },
                   {
                      "type" : "rejected",
                      "like" : 3
                   },
                   {
                      "type" : "spam",
                      "like" : 3
                   }
                ]
}

Za předpokladu struktury vašeho dokumentu, jak je uvedeno výše, jsem sestavil tento dotaz. Musíte s ním manipulovat podle svých potřeb.

db.posts.aggregate([
        {$unwind:"$comments"},
        {$match:{"$comments.type":{$ne:"spam"}}},
        {$group:{_id:{post_id:"$post_id",comment_id:"$comment_id"},LikeSum:{$sum:"$comments.like"}}},
        {$group:{_id:{post_id:"$_id.post_id"},AvgComments:{$avg:"$LikeSum"}}},
        {$sort:{AvgComments:-1}},
        {$limit:1}
              ])

Výše uvedený dotaz je vytvořen následovně:

1.) Unwind the comments array and form individual documents for each element in the comments array
2.) Select only the non-spam comments
3.) Calculate the sum of likes for each comment of all posts
4.) Calculate the average Comment likes for each post
5.) Sort documents in descending order of Average Comment Likes
6.) Select only the first document.

Výstupní dokument bude něco jako

{
    "result" : [
        {
            "_id" : {
                       "post_id" : xx
                    },
            "AvgComments" : xx.xx // Avg Comment likes for post xx
        }
               ],
    "ok" : 1
}



  1. Vrací modul.require(...).* kopii souboru module.exports.* nebo jeho odkaz?

  2. předávání dat mezi serverem a klientem (node.js + mongodb)

  3. mongodb aggregation project objectId with concat

  4. Jaká je alternativa pro plugin elastický river-mongodb, podporovaný elasticsearch 2.2.0?