Получить счетчик локального поля с помощью $ lookup mongodb - PullRequest
0 голосов
/ 10 декабря 2018

Я хочу получить количество локальных полей для конкретного поля projectId. Например, у меня есть следующие документы:

{
   "_id" : ObjectId("5c0a4efa91b5021228681f7a"),
   "projectId" : ObjectId("5c0a4083753a321c6c4ee024"),
   "hours" : 8,
   "__v" : 0
}

{
   "_id" : ObjectId("5c0a4f4191b5021228681f7c"),
   "projectId" : ObjectId("5c0a2a8897e71a0d28b910ac"),
   "hours" : 6,
   "__v" : 0
}

{
   "_id" : ObjectId("5c0a4f4191b5021228681f7d"),
   "projectId" : ObjectId("5c0a4083753a321c6c4ee024"),
   "hours" : 2,
   "__v" : 0
}

Теперь я хочу получить количество часов в поле projectId, равное 5c0a4083753a321c6c4ee024, что составляет 10.

Возможно ли это с помощью $ lookup?

1 Ответ

0 голосов
/ 10 декабря 2018

$lookup используется для объединения двух коллекций.И здесь вы пытаетесь получить общее количество hours для конкретного projectId.Поэтому вам необходимо использовать $group здесь.

db.collection.aggregate([
  { "$match": { "projectId": mongoose.Types.ObjectId("5c0a4083753a321c6c4ee024") }}
  { "$group": {
    "_id": "$projectId",
    "totalHours": { "$sum": "$hours" }
  }}
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...