mongodb - mongodb 对其他字段进行分组和计数、匹配和更新
问题描述
我有以下字段
mongodb 中的 e_id、c_id、m_id 必须与 id 传递参数匹配。
data -> 是多个 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"),
}
预期结果应该使非最新记录处于活动状态 false 并且最新记录必须处于活动状态每个创建的新记录新记录应该处于活动状态 = true 并且其他相同的 event_id、coor_id 和 manage_id 必须处于活动状态 = false
我正在尝试使用匹配所有结果,然后分组和计数,然后如果计数大于 1,则获取最新的文档找到结果并更新其余匹配结果,但在 mongodb 中我也想写。有什么建议吗?
解决方案
我设法通过c#做到了
首先是我在 create 中传递了 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检查第一个不能等于其他
然后更新除第一个列表之外的其他列表。
完成...谢谢
推荐阅读
- python - 使用计算机视觉计算移动角度时出错
- algorithm - 用函数式语言实现扩展欧几里得算法
- python - How to display an image when selected and before saving it in the database?
- node.js - nodejs 12 升级后,node-grpc 的 npm install 失败。无法使用 msbuild 构建 grpc_node
- javascript - 我可以在不使用 AJAX 的情况下发送以发布重新排序的序列化排序列表吗?
- php - 如何修改此功能代码才能工作?
- google-apps-script - 这是 Google Apps Script SpreadsheetApp Range.copyTo 中的错误吗
- git - How do i clone work from the master branch to a new one?
- r - R:根据每行中两个值的最接近匹配和精确匹配合并查找表中的行
- java - 硬编码区域、城市、国家字符串