Как найти среднее значение поля в Mongodb? - PullRequest
1 голос
/ 23 октября 2019

Я пытаюсь найти среднюю цену книг в js-файле. До сих пор мне удалось подсчитать количество книг, которое составляет 4 (запрос показан ниже)

db.bookshop.aggregate([ {"$unwind":"$book"},
                          {"$project":{"price":"$book.book","_id":0}},
                          {"$count":"average price of books"} ]).pretty();


вывод для этой очереди

{ "average price of books" : 4 }

и это моя попытка найти общие цены на все книги, которые не работают. Я сделал это, как я предполагаю, чтобы найти среднее значение, это будет сумма, деленная на количество.

db.bookshhop.aggregate([ {$group: {_id: null,"TotalAmount": 
{$sum: "$book.price"}}}] );

У меня возникли проблемы с поиском средней цены всех цен на книги. Как я могу это сделать? спасибо (удар книги книги JS)

 db.bookshop.insert( {
    "_id":"185.3.16",
    "book": {
        "callnum":"185.3.16",
        "isbn":"1-292-06118-9",
        "title":"Database Systems",
        "authors":[
            {
                "fname":"Thomas",
                "lname":"Connolly"},
            { 
                "fname":"Carolyn",
                "lname":"Begg"}
        ],
        "publisher":"Pearson Pty Ltd",
        "year":2015,
        "price":136.99,
        "topic":"Computer Science",
        "description":"This is the 6th edition. You can register online to access the examples",
        "keywords":["Database", "XML", "Distributed"]
        }
});

db.bookshop.insert( {
    "_id":"163.24.12",
    "book": {
        "callnum":"163.24.12",
        "isbn":"1-123-456-810",
        "title":"Core Java",
        "authors":[
            {
                "fname":"Horstmann",
                "lname":"Cornell"}
        ],
        "publisher":"PH Pty Ltd",
        "year":2012,
        "price":142.90,
        "topic":"Computer Science",
        "description":"It covers JAVA programming and JAVA script",
        "keywords":["JAVA", "XML", "Script"]
    }
});

db.bookshop.insert( {
    "_id":"123.45.67",
    "book": {
        "callnum":"123.45.67",
        "isbn":"1-123-456-789",
        "title":"Algorithms",
        "authors":[
            {
                "fname":"James",
                "lname":"Bond"},
            {
                "fname":"Harry",
                "lname":"Potter"},
            {
                "fname":"William",
                "lname":"Stallings"}
        ],
        "publisher":"Pearson Pty Ltd",
        "year":2013,
        "price":65.85,
        "topic":"Computer Science",
        "description":"It contains algorithms and their applications. You can download examples from the website"
    }
});
db.bookshop.insert( {
    "_id":"134.41.33",
    "book": {
        "callnum":"134.41.33",
        "isbn":"1-213-431-770",
        "title":"C++ Programming",
        "authors":[
            {
                "fname":"Larry",
                "lname":"Peterson"}
        ],
        "publisher":"Pearson Pty Ltd",
        "year":2010,
        "price":74.90,
        "topic":"Computer Science",
        "description":"C++ programming and its applications",
        "keywords":["C++", "Class", "Overloading", "Inheritance"]
    }
});


Ответы [ 2 ]

2 голосов
/ 23 октября 2019

Вы можете получить среднее значение цены, используя $ avg.

документы: https://docs.mongodb.com/manual/reference/operator/aggregation/avg

db.bookshop.aggregate([
  {
    $group: {
      _id: null,
      AvgPrice: {
        $avg: "$book.price"
      }
    }
  }
]);

Это даст следующий результат:

[
  {
    "AvgPrice": 105.16,
    "_id": null
  }
]

Вот площадка для тестирования. https://mongoplayground.net/p/csfgxFBbYfx

0 голосов
/ 23 октября 2019
db.collection.aggregate( [{ $group: {  _id: "Books Price", "average": {    "$avg": "$book.price"  }} }] )
...