【问题标题】:How can I query all transaction details of the first 50 customers from a MongoDB server?如何从 MongoDB 服务器查询前 50 个客户的所有交易详情?
【发布时间】:2020-10-26 18:53:13
【问题描述】:

集群包含大约 240,000 个交易数据条目,位于我 PC 的本地服务器中。

Cust_ID 代表客户 ID

该文件包含此客户完成的所有交易,然后是另一个客户完成的交易,依此类推。大约 3000 名客户。

每个客户的交易数量不一样。

每个客户的 Cust_ID 是随机且唯一的,它们在集群中没有任何特定顺序。

如何查询前 50 位客户的所有交易,而无需手动输入每个客户 ID?

第一,我的意思是:

假设我们有如下条目:

{
    Cust_ID: "1001",
    Name: "ABC",
    transaction: "1"
}

{
    Cust_ID: "1001",
    Name: "ABC",
    transaction: "3"
}

{
    Cust_ID: "1001",
    Name: "ABC",
    transaction: "6"
}

{
    Cust_ID: "1092",
    Name: "BCD",
    transaction: "23"
}

{
    Cust_ID: "1092",
    Name: "BCD",
    transaction: "12"
}

{
    Cust_ID: "2104",
    Name: "CDE",
    transaction: "234"
}

{
    Cust_ID: "1004",
    Name: "DEF",
    transaction: "3"
}

{
    Cust_ID: "1551",
    Name: "ASD",
    transaction: "54"
}

/*The transaction details of 1st 3 customers would be:*/

{
    Cust_ID: "1001",
    Name: "ABC",
    transaction: "1"
}

{
    Cust_ID: "1001",
    Name: "ABC",
    transaction: "3"
}

{
    Cust_ID: "1001",
    Name: "ABC",
    transaction: "6"
} //customer 1

{
    Cust_ID: "1092",
    Name: "BCD",
    transaction: "23"
}

{
    Cust_ID: "1092",
    Name: "BCD",
    transaction: "12"
} //customer 2

{
    Cust_ID: "2104",
    Name: "CDE",
    transaction: "234"
} //customer 3

【问题讨论】:

  • “第一”按什么顺序?
  • 按照输入数据的顺序。
  • 您的数据中需要有一个字段,例如反映订单的计数器。 MongoDB 不维护集合文档的插入顺序。
  • 这些客户 ID 是否在前一个之后排序(连续)。它们是如何生成的?
  • 我已编辑问题以说明我的意思。集群是由 CSV 文件创建的。

标签: javascript mongodb mongodb-query pymongo


【解决方案1】:

可以通过 Cust_ID 使用聚合查询 $group 它们,然后在这些分组记录上使用 $sort$limit(按 50)。

db.collection.aggregate([
  {
    $group: {
      _id: "$Cust_ID",
      books: {
        $push: "$$ROOT"
      }
    }
  },
  {
    $sort: {
      "_id": 1
    }
  },
  {
    $limit: 50
  }
]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 2011-08-30
    相关资源
    最近更新 更多