2013-03-18 4 views
0

В следующем примере (http://docs.mongodb.org/manual/reference/aggregation/group/#_S_group) есть источник образца:Что говорит «1» в групповом агрегации?

db.article.aggregate(
    { $group : { 
     _id : "$author", 
     docsPerAuthor : { $sum : 1 }, // here goes the question 
     viewsPerAuthor : { $sum : "$pageViews" } 
    }} 
); 

Мой вопрос: что 1 на самом деле имея в виду (что поле)? Что можно написать вместо этого? Может быть, например, $author?

И вообще - как я должен «читать» это: viewsPerAuthor : { $sum : "$pageViews" } - это его «viewsPerAuthor является суммой PageViews»?

+1

Это означает, что $ вкл один или начать на одном, если поле не установлено. – Sammaye

+0

Если да, то что означает '$ pageViews' в следующей строке? Это смущает. – BreakPhreak

+1

Это означает суммирование итогового значения для этого поля, называемого 'pageViews', поэтому вы можете либо подытожить поле, либо просто подсчитать, сколько раз это поле агрегируется в группе, или в SQL' SELECT COUNT (*) как docsPerAuthor , SUM (pageViews) AS viewPerAuthor FROM article GROUP Автор – Sammaye

ответ

0

Давайте пройти через эти по кусочкам:

docsPerAuthor : { $sum : 1 }, 

означает, что для каждого документа в этой группе (от автора) сделать новое поле, называемым docsPerAuthor и либо $inc его по 1 или своему первоначальному значению поля 1 ,

viewsPerAuthor : { $sum : "$pageViews" } 

означает, что для каждого документа в этой группе подытожить pageViews поле документов, которые соответствуют этой конкретной группе.

Это в основном так же, как:

SELECT COUNT(*) as docsPerAuthor, SUM(pageViews) AS viewsPerAuthor 
     FROM article GROUP BY author 

 Смежные вопросы

  • Нет связанных вопросов^_^