每个文档的mongodb检索其字段+通过引用在另一个集合中的ID计数

蒂博特鲁

可以说我有一个用户集合,其中单个文档具有这样的字段

{
    "_id" : "4775222e-8e4f-4f84-8dba-b097291bbd39",
    "surname" : "Smith",
    "forename" : "John"
}

并说我有工作集合,其中文档具有一些常规字段,但也有对用户ID的db ref,如下所示

{
    "_id" : "f4bdda3e-0e8d-4e8d-b070-7d01421f5a51",
    "description" : "do something",
    "manager" : {
        "$ref" : "users",
        "$id" : "4775222e-8e4f-4f84-8dba-b097291bbd39"
    }
}

是否可以检索用户列表,但也可以为每个用户在单个查询中获取属于他的作业的数量,因此最终输出将是实体列表,其中单个实体看起来像

{
    "_id" : "4775222e-8e4f-4f84-8dba-b097291bbd39",
    "surname" : "Smith",
    "forename" : "John",
    "jobsCount":3
}
汤姆·斯拉伯特

您可以通过简单的$ lookup阶段执行此操作

db.users.aggregate([
  {
    "$lookup": {
      "from": "jobs",
      "localField": "_id",
      "foreignField": "manager.$id",
      "as": "jobsCount"
    }
  },
  {
    "$addFields": {
      "jobsCount": {
        $size: "$jobsCount"
      }
    }
  }
])

蒙哥运动场

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在一个集合中查找未被另一个集合中的文档引用的MongoDB文档?

MongoDB:如何为集合中的每个文档设置一个新字段,该字段等于另一个字段的值

如何删除一个集合中的引用文档及其从另一个引用集合中的记录

如何获取另一个集合中引用的MongoDB文档的列表

如何在 mongoDB 中查询每个文档的另一个集合

如何获取包含另一个集合中的键的文档计数

我如何引用另一个猫鼬模型中的字段,以便我可以从不同集合中检索多个文档

在另一个Collection Mongodb中的子文档中引用_id

在Firestore中创建一个文档,其中包含对另一个集合中现有文档的引用

根据另一个集合中的ID对mongodb集合项进行排名

mongodb-根据使用量计数从一个集合中获取顶级项目,作为另一个集合中的字段

在每个文档中添加一个新字段,并在mongodb中为同一文档的另一个字段赋值

如何引用在另一个文件中声明的类并将其添加为静态字段

如何引用在WHERE子句中计算的另一个字段?

通过其键值之一(产品ID)定位数组中的对象以更改其另一个值(增加计数)?

MEAN堆栈-用另一个集合中的对应名称替换文档字段数组ID

MongoDB 使用另一个集合中的另一个字段更新字段

Elasticsearch将每个文档的ID更新为文档中另一个字段的值

通过mongodb中的聚合和$ facet在每个文档中添加一个新字段

MongoDB-插入两个集合,一个集合引用另一个集合作为子文档

Mongodb将一个集合复制到另一个集合中

检索_ids在另一个集合中的所有文档

更新async forEach以根据另一个集合中的属性更新每个文档属性

打字稿:如何在本文档中引用另一个文档的字段?

SQL通过id从另一个表中检索值并显示总数

如何在mongodb中的另一个文档中过滤文档的字段?

mongodb将文档从一个集合移到另一个集合

向MongoDB集合中的每个文档添加新字段

集合的每个文档中的MongoDB过滤器数组字段