0

我有 3 个集合,我想执行类似于 sql 查询的查询

SELECT fp.userId, fp.orderId, productId, fp.request_Payment_ChargeTotal, 
fp.createdOn, u.referrerSite, COUNT(*), 
sum( fp.request_Payment_ChargeTotal ) AS total 
FROM `firstdata_payment_webservice` fp, userlicenses ul, users u 
WHERE u.userId = ul.userId
AND fp.response_TransactionResult = 'APPROVED' 
AND fp.request_Payment_ChargeTotal > 0 
AND ul.orderId = fp.orderId AND fp.createdOn 
BETWEEN cast( '2011-09-10' AS DATETIME ) 
AND cast( '2011-09-20' AS DATETIME )
GROUP BY u.referrerSite, productId WITH ROLLUP

我如何在学说 mongodb odm 中进行类似的操作。

4

1 回答 1

0

好吧,应用“JOIN”并不是 MongoDB 的本意。因此,您必须以不同的方式构建数据。

db.users

  • ID
  • 姓名
  • 许可证(存储为 Hash 类型)

db.orders

  • ID
  • created_on(日期时间类型)
  • processes_on(日期时间类型)
  • user_id(可能是 DBRef 或 ObjectId 类型)
  • products(存储为 Array 类型,包含对象)
  • 交易(存储为哈希类型,包含日期时间、网络服务类型和其他信息)

使用 MapReduce,您可以通过查询订单表来计算其他内容。如果您需要有关客户的数据,请在另一个查询中使用您要查找的用户 ObjectIds 数组来执行此操作。

于 2011-10-19T13:52:52.163 回答