【问题标题】:Find distinct field in multiple same collections mongodb在多个相同的集合中查找不同的字段 mongodb
【发布时间】:2023-03-15 17:05:02
【问题描述】:

我在一个数据库中有 7 个集合,这些集合相同,我必须在这些集合中找到一个唯一字段并对其进行计数或将其显示在名为 result 的新集合中。

我尝试了查找,但它不起作用。谁能指导我如何完成这项工作?

这是7个集合:20200309-20200310-20200311-20200312-20200313-20200314-20200315result是存储查询结果的集合。

col : 20200309 
{
    "_id" : ObjectId("5e6f7c7c0371c86b8737628b"),
    "sid" : 13328,
    "trans-id" : "PROV_158374123364907198165",
    "status" : "1",
    "base-price-point" : "6000",
    "msisdn" : "989115506327",
    "keyword" : "",
    "validity" : 0,
    "next_renewal_date" : "",
    "shortcode" : "",
    "billed-price-point" : "",
    "trans-status" : 0,
    "chargeCode" : "AVMREWCAVMAW6000",
    "datetime" : "2020-03-09 11:37:13.649",
    "event-type" : "1.5",
    "channel" : "system"
}

{
    "_id" : ObjectId("5e6f7c7c0371c86b8737628c"),
    "sid" : 13328,
    "trans-id" : "PROV_158374123384007267165",
    "status" : "1",
    "base-price-point" : "6000",
    "msisdn" : "989107351827",
    "keyword" : "",
    "validity" : 0,
    "next_renewal_date" : "",
    "shortcode" : "",
    "billed-price-point" : "",
    "trans-status" : 0,
    "chargeCode" : "AVMREWCAVMAW6000",
    "datetime" : "2020-03-09 11:37:13.840",
    "event-type" : "1.5",
    "channel" : "system"
}
 col : 20200310 
{
    "_id" : ObjectId("5e6f7d140371c86b873e6bce"),
    "sid" : 13328,
    "trans-id" : "PROV_158383144246275616515",
    "status" : "1",
    "base-price-point" : "6000",
    "msisdn" : "989909789746",
    "keyword" : "",
    "validity" : 0,
    "next_renewal_date" : "",
    "shortcode" : "",
    "billed-price-point" : "",
    "trans-status" : 0,
    "chargeCode" : "AVMREWCAVMAW6000",
    "datetime" : "2020-03-10 12:40:42.462",
    "event-type" : "1.5",
    "channel" : "system"
}
{
    "_id" : ObjectId("5e6f7d140371c86b873e6bcf"),
    "sid" : 13328,
    "trans-id" : "PROV_158382430015338271227",
    "status" : "1",
    "base-price-point" : "6000",
    "msisdn" : "989901812412",
    "keyword" : "",
    "validity" : 0,
    "next_renewal_date" : "",
    "shortcode" : "",
    "billed-price-point" : "",
    "trans-status" : 0,
    "chargeCode" : "AVMREWCAVMAW6000",
    "datetime" : "2020-03-10 10:41:40.153",
    "event-type" : "1.5",
    "channel" : "system"
}

和上面一样有5个集合

【问题讨论】:

  • 我不太确定find a unique feild in those collections and count it or show it 是什么意思,您能否展示一下输出的示例以及您尝试过的查询?
  • 这个问题似乎根本没有包括任何解决问题的尝试。请编辑问题以显示您尝试过的内容,并使用Minimal, Complete, and Verifiable example 显示您遇到的特定障碍。欲了解更多信息,请参阅How to Ask
  • 我想看到 distinct("msisdn",{"status":"1"}).length 但我可以为一个集合执行此操作我想同时为 7 个集合执行此操作看看有多少状态为 1 的“msisdn”
  • 我编辑了你的标题,以便更多地解释你真正想要实现的目标。还编辑了文本,因为它包含很多不需要或不清楚您想要解释的内容。我希望这有助于现在更好地理解您的问题。
  • 集合字段上是否定义了任何索引?

标签: mongodb distinct


【解决方案1】:

以下脚本可用于获取数组中不同的msisdn 值和计数。从 mongo shell 运行脚本。

为了高效运行,msisdnstatus 两个字段需要有一个索引:{ status: 1, msisdn: 1}。需要在所有集合上创建索引。请注意,如果集合只有几千个文档,则不需要索引。

collections = [ "20200309", "20200310", // ... ]
combined = [ ]

for (let coll of collections) {
  combined = combined.concat( db.getCollection(coll).distinct( "msisdn", { status: "1" } ) )
}

combined = [...new Set(combined) ]
print('Combined count:', combined.length)

combined = [...new Set(combined) ] 语句从七个集合的组合不同值中删除重复项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-22
    • 2019-01-06
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多