【问题标题】:Get count of a Local field with $lookup mongodb使用 $lookup mongodb 获取本地字段的计数
【发布时间】:2018-12-10 19:30:08
【问题描述】:

我想获取本地字段特定 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 的 hours 字段计数等于 5c0a4083753a321c6c4ee024,即 10。

$lookup 可以吗?

【问题讨论】:

  • 感谢它的工作。但是我想在 $lookup 的另一个控制器中使用上面的查询来获取另一个集合,它有自己的 $match 条件。我该怎么办?

标签: mongodb mongoose mongodb-query aggregation-framework


【解决方案1】:

$lookup 用于连接两个集合。在这里,您试图获取特定 projectIdhours 总数。因此,这里需要使用$group

db.collection.aggregate([
  { "$match": { "projectId": mongoose.Types.ObjectId("5c0a4083753a321c6c4ee024") }}
  { "$group": {
    "_id": "$projectId",
    "totalHours": { "$sum": "$hours" }
  }}
])

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-26
  • 1970-01-01
  • 2019-05-11
  • 2018-06-29
  • 2018-04-26
  • 2019-02-25
  • 2019-02-04
相关资源
最近更新 更多