【问题标题】:Append fields from a document to other document having matching field MongoDB将文档中的字段附加到具有匹配字段 MongoDB 的其他文档
【发布时间】:2017-10-06 08:15:18
【问题描述】:

我正在尝试编写 MongoDB 查询来完成下面解释的事情。我不知道在 mongoDB 中是否可行。我知道如何在单个文档或多个文档中插入一个字段,但我的问题是一点点进展。 我有一个包含 5000 个文档的集合(比如“procs”),例如:

{ “西德”:1 “过程”:[ { “post_time”:0, “p_start”:1487303363.8170002, “PID”:1 }
] }

这是来自不同集合的另一个文档 2(比如“acqs”):

{ “sn”:10302301, “日期”:“2017-12-11”, “西德”:1 “acqs”:[{ “aqid”:2, “aq_end”:1487305607.342 } ] } 该集合还包含大约 5000 个文档。

现在我想将文档 2 中的“sn”和“日期”字段插入到文档 1 中,这些字段对应于相同的“sid”字段值。 所以我想输出这样的东西: { “sn”:10302301, “日期”:“2017-12-11”, “西德”:1 “过程”:[{ “post_time”:0, “p_start”:1487303363.8170002, “PID”:1 } ] }

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    在 mongoDb 中,你可以使用 $lookup

    db.procs.aggregrate([
       {
          $lookup:
            {
              from: "acqs",
              localField: "sid",
              foreignField: "sid",
              as: "procs_docs"
            }
       }
    
    ])
    

    结果会是这样的:

      { 
    "sn": 10302301, "date": "2017-12-11", "sid": 1 ,
    "acqs": [{ "aqid": 2, "aq_end": 1487305607.342 } ]
    "procs_doc": ["sid": 1,procs:{ "post_time": 0, "p_start": 1487303363.8170002, "pid": 1 } ] }
    

    如果您使用的是 mongoose,那么您可以使用 mongoose 的 populate 方法,它可以让您引用其他集合中的文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-18
      • 2017-08-12
      • 2021-01-28
      • 1970-01-01
      • 2020-07-04
      • 1970-01-01
      • 2015-05-03
      • 1970-01-01
      相关资源
      最近更新 更多