c# - 将客户和订单数据从 SQL 服务器发送到 MongoDB 以及超链接的最佳方式
问题描述
问题陈述:
我需要将 Customer 及其所有相应的订单以以下格式存储在MongoDB
. 当前数据位于 2 个不同的表中 -MSSQL
数据库中的客户和订单。
MongoDb 中的预期集合:
{
"_data": [
{
"customer": {
"customerID": "1240014902244000006",
"firstName": "Jerry",
"surname": "Galoski",
"orders": [
{
"_data": {
"orderId": "1240014912244000016",
"suburb": "Delhi",
"postcode": "110051",
"country": "India"
},
"_links": [
{
"rel": "self",
"href": "/customer/1240014902244000006/orders",
"action": "GET"
},
{
"rel": "customer",
"href": "/customer/1240014902244000006",
"action": "GET"
}
]
},
{
"_data": {
"orderId": "1240014912244000024",
"suburb": "Delhi",
"postcode": "110051",
"country": "India"
},
"_links": [
{
"rel": "customer",
"href": "/customer/1240014902244000006/orders",
"action": "GET"
}
]
}
]
},
"_links": [
{
"rel": "self",
"href": "/customer/1240014902244000006",
"action": "GET"
},
{
"rel": "orders",
"href": "/customer/1240014902244000006/orders",
"action": "GET"
}
]
}
]
}
为实现这一目标而采取的步骤:
- 第一步是整理所有订单数据,我正在使用以下 SQL 查询:
SELECT CustomerId, AllOrderIds =
STUFF(
(
SELECT DISTINCT ', ' + CAST(e2.OrderId AS VARCHAR(MAX))
FROM CustomerOrderRelation e2
WHERE e1.CustomerId = e2.CustomerId
FOR XML PATH('')
), 1,1,''
) FROM CustomerOrderRelation cor;
然后在 C# 代码中,我会一一处理客户记录,为每个记录生成超链接。
我还需要为订单记录生成超链接。
一旦我在 C# 中生成了超链接,我将调用
InsertMany
命令 (MongoDB) 来插入数据。因此,我将在 MongoDb 中创建 2 个集合——客户和订单各一个。最后,我将使用 MongoDb 的 MapReduce 功能合并 2 个集合以获取数据。
db.customers.mapReduce(mapCustomers, reduce, {"out": {"reduce": "customerId"}});
db.orders.mapReduce(mapOrders, reduce, {"out": {"reduce": "customerId"}});
db.customerAndOrders.find().pretty();
- 我需要进行合并,因为我没有找到一种聪明的方法来执行以下操作:
- 在一个实体中获取客户及其合并订单
- 为客户及其所有订单生成超链接
- 将此数据与客户详细信息及其订单详细信息一起推送到 MongoDb
需要的建议: 有没有更好的方法来完成上述工作?
解决方案
推荐阅读
- java - 如何提高spring mvc中批量事务的性能
- tibco - 如何使用 Render-CSV BW 步骤中重复的字段基数?
- ajax - 使用 laravel 和 simple-peer 进行数据通道的 WebRTC 错误
- python-3.x - 当我运行此代码时,出现错误:“TypeError:参数必须是字符串或数字”
- mongodb - MongoDB 中的 $type(聚合)
- odoo - 在 Qweb 中如何根据用户选择的值(odoo)过滤数据?
- java - 当我尝试运行我刚刚创建的 jar 文件时,Maven 错误“无法初始化主类”
- python - 除了块之外的打印语句
- spring - 在实体中自动填充 created_date、last_modified_date、created_by 和 last_modified_by:使用 JPA 进行休眠
- sql - Postgres JSONB 按版本号选择,只返回最新的