mongodb分组并计数,匹配和更新其他字段

时间:2018-08-17 02:01:16

标签: mongodb aggregation-framework

我有以下字段

mongodb中的e_id,c_id,m_id必须与 id通过参数传递。

数据->是多个event_id,coor_id,manage_id

  {
        "_id" : "1",
        "event_id" : "abscdsadsad890",
        "coor_id" : "cdaddsadewqwae889",
        "manage_id" : "fdfdfsdfdsfsdf908",
        "active" : true
        "date" : ISODate("2014-01-14T00:00:00Z"),
    }

     {
        "_id" : "1",
        "event_id" : "abscdsadsad890",
        "coor_id" : "cdaddsadewqwae889",
        "manage_id" : "fdfdfsdfdsfsdf908",
        "active" : true
        "date" : ISODate("2014-01-14T00:00:00Z"),
    }

 {
        "_id" : "1",
        "event_id" : "abscdsadsad890",
        "coor_id" : "cdaddsadewqwae889",
        "manage_id" : "fdfdfsdfdsfsdf908",
        "active" : true
        "date" : ISODate("2014-01-14T00:00:00Z"),
    }

预期结果:

  {
            "_id" : "1",
            "event_id" : "abscdsadsad890",
            "coor_id" : "cdaddsadewqwae889",
            "manage_id" : "fdfdfsdfdsfsdf908",
            "active" : true
            "date" : ISODate("2014-01-14T00:00:00Z"),
        }

         {
            "_id" : "1",
            "event_id" : "abscdsadsad890",
            "coor_id" : "cdaddsadewqwae889",
            "manage_id" : "fdfdfsdfdsfsdf908",
            "active" : false
            "date" : ISODate("2014-01-14T00:00:00Z"),
        }

     {
            "_id" : "1",
            "event_id" : "abscdsadsad890",
            "coor_id" : "cdaddsadewqwae889",
            "manage_id" : "fdfdfsdfdsfsdf908",
            "active" : false
            "date" : ISODate("2014-01-14T00:00:00Z"),
        }

预期结果应该是最新的 记录为活动的错误和最新的 每个创建的新记录都必须处于活动状态 新记录应处于活动状态= true等 必须具有相同的event_id,coor_id和manage_id 活跃=假

我正在尝试使用匹配所有结果,然后进行分组和计数, 之后,如果count大于1,则获取找到的最新文档结果 并更新其余匹配结果,但在mongodb中 我也想写。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我设法通过c#

首先是我将event_id,coor_id和manage_id传递给 创建。然后,我使用的C#mongodb驱动程序是

var list = await collection.AsQueryable().Where(x => c.id == c.id && m.id == m.id).toList();

然后循环并通过_id检查第一个不能与其他相等

然后更新除第一个列表以外的其他人。

完成...谢谢