如何在Meteor.js中通过该文档从集合和组中查找文档?

时间:2015-03-27 03:55:38

标签: meteor

我想从集合中查找文档并将其分组并将其汇总在一起以将其返回给帮助程序。

例如:我有Sales, SaleDetailsProducts个收藏集,我想从salesDetails获取销售额的产品名称和数量。 像SQL代码:

SELECT  Products.name as name,
sum(SaleDetails.quantity) AS quantity
FROM (( Sales INNER JOIN SaleDetails ON Sales.Id=SaleDetails.SaleId)
INNER JOIN Product ON Product.Id=SaleDetails.ProductId)
Where Sale.IsPay=true
GROUP BY SaleDetails.ProductId

meteor.js怎么样?

2 个答案:

答案 0 :(得分:1)

我不确定您对Meteor有多少了解它如何处理数据存储,但它在服务器上使用MongoDB,并在客户端上使用名为MiniMongo的MongoDB的精简解释。 MongoDB是一个基于noSQL的数据库,因此没有上面的SQL查询所依赖的关系数据关系来查询表中的记录。虽然它确实提供了示例查询所涉及的一些操作,例如求和和分组,但它本身并不进行连接。尽管MongoDB目前的版本为3.0,但Meteor仍然完全投入2.6,以便让新版本中的问题得以解决。有关MongoDB 2.6的文档,请参阅here。这些是您在示例查询中专门引用的sumgroup操作的2.6版本的一些链接。

我建议您查看MongoDB操作的工作原理,然后查看collection operations的Meteor文档,以确定是否以及如何在noSQL数据库结构的上下文中解释您的示例查询。我必须警告你,在从基于SQL的世界进入基于noSQL的世界之后,改变你的思维方式并不总是在关系意义上进行思考有点困难,但我确定在仔细阅读之后对于MongoDB和Meteor的文档,如何正确构建数据以便于使用MongoDB的各种数据库操作将变得更加清晰。

答案 1 :(得分:0)

不重复@ n4tiv3pwnst4r的其他优秀答案,首先,Meteor使用MongoDB一个不支持事务和关系的noSQL数据库。

但....

您可以使用一些策略。

首先,正确构建数据,看一下schema design in mongo

的简介

其次,如果您已在客户端上拥有某些数据(例如产品),则可以为其他集合创建其他pub / subs,发布您特别需要的数据,这是客户端连接虽然有用,但应谨慎,谨慎和谨慎地使用。

最后,我们有时候都需要关系,并且...... 这是一个的包,请查看publish with relations上的atmosphere,即meteor的软件包存储库。