使用mongodb获得独特的价值

时间:2017-09-28 10:14:01

标签: mongodb mongodb-query aggregation-framework

我正在使用一个具有该用户的用户名和工作持续时间的表。该集合对于同一用户具有多个持续时间。我想显示该用户名的不同用户名和持续时间总和。

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
    os.path.join(BASE_DIR, "clsapp", "static"),
]
STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.FileSystemFinder",
    "django.contrib.staticfiles.finders.AppDirectoriesFinder"
)

**Sample of how I call static files through my templates**

{% load staticfiles %}
<div class="img" style="background-image: url('{% static img_path %}')">
</div>

显示用户名3次并显示

db.collection.aggregate([       
    { "$match": { FacilityID: '59a53f0c6077b2a029c52b7f', ProjectID: '59c1171f734bcb3038e2bb67'} },
    { "$group": { _id: { TeamMemberUserID: "$TeamMemberUserID",Duration: "$Duration"}} },
    { "$project": { TeamMemberUserID: "$_id.TeamMemberUserID", _id: 0, Duration: "$_id.Duration", _id: 0} }
])
该用户的

对于不同类型的工作具有不同的持续时间,例如:设计20小时,编码10小时,测试10小时。

但我希望向用户显示他所有工作的持续时间总和。

siva 40
siva 40
siva 40

期待输出:

User Name:    Phase       duration
Siva          Testing      10
siva          Coding       10
siva          Designing    20

以上查询在持续时间分组时执行用户名。持续时间不同,因为它根据持续时间显示用户名。

1 个答案:

答案 0 :(得分:0)

您需要将$sum累加器应用于$Duration,而不是将其包含在_id的{​​{1}}中:

$group