doctrine mongodb odm query group by

时间:2011-09-21 13:23:54

标签: sql mongodb doctrine-odm

我有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中进行类似的操作。

1 个答案:

答案 0 :(得分:0)

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

db.users

  • ID
  • 名称
  • 许可证(存储为哈希类型)

db.orders

  • ID
  • created_on(日期时间类型)
  • processed_on(日期时间类型)
  • user_id(可以是DBRef或ObjectId类型)
  • 产品(存储为数组类型,包含对象)
  • 事务(存储为Hash类型,包含日期时间,Web服务类型和其他内容等信息)

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