没有SQL数据库加入和分组

时间:2016-12-12 03:11:41

标签: mongodb nosql

我有一个MongoDB集合,其文档如下所示:

{
    "_id" : ObjectId("583f6e6d14c8042dd7c153f1"),
    "transid" : 1,
    "acct" : "acct1",
    "transdate" : ISODate("2012-01-31T05:00:00.000Z"),
    "category" : "Fees",
    "amount" : 103
}

在我的应用中,我想向用户显示设置列表中所有可用类别的列表,并为他们提供添加新类别的选项。这些将显示在下拉列表中。我的问题是如何存储不同的类别列表,因为它们实际上可能没有分配给事务。

我是否应该有一个填充我的下拉列表的类别集合?

此外,当我按类别提取所有交易清单时,如何包含没有任何交易的类别?

1 个答案:

答案 0 :(得分:0)

您可以将它们放在单独的集合中,然后在这种情况下,您需要触发聚合$ lookup查询以从两个不同的集合中获取数据。请参阅here.

另一种选择是将它保存在同一个集合中,而不是像

这样的其他细节
{
    "_id" : ObjectId("583f6e6d14c8042dd7c153e1"),
    "transdate" : ISODate("2012-01-31T05:00:00.000Z"),
    "category" : "Fees"
}

然后,要获取类别,您可以触发一个独特的查询,如

  

db.runCommand({distinct:" collectionName",key:" category"})

我倾向于采用第二种方法。第一种是传统的RDBMS方法,需要维护两个集合并进行查询,这种方法很昂贵。 这种情况似乎并不需要额外的开销,但选择只是你的。