我有一个MongoDB集合,其文档如下所示:
{
"_id" : ObjectId("583f6e6d14c8042dd7c153f1"),
"transid" : 1,
"acct" : "acct1",
"transdate" : ISODate("2012-01-31T05:00:00.000Z"),
"category" : "Fees",
"amount" : 103
}
在我的应用中,我想向用户显示设置列表中所有可用类别的列表,并为他们提供添加新类别的选项。这些将显示在下拉列表中。我的问题是如何存储不同的类别列表,因为它们实际上可能没有分配给事务。
我是否应该有一个填充我的下拉列表的类别集合?
此外,当我按类别提取所有交易清单时,如何包含没有任何交易的类别?
答案 0 :(得分:0)
您可以将它们放在单独的集合中,然后在这种情况下,您需要触发聚合$ lookup查询以从两个不同的集合中获取数据。请参阅here.
另一种选择是将它保存在同一个集合中,而不是像
这样的其他细节{
"_id" : ObjectId("583f6e6d14c8042dd7c153e1"),
"transdate" : ISODate("2012-01-31T05:00:00.000Z"),
"category" : "Fees"
}
然后,要获取类别,您可以触发一个独特的查询,如
db.runCommand({distinct:" collectionName",key:" category"})
我倾向于采用第二种方法。第一种是传统的RDBMS方法,需要维护两个集合并进行查询,这种方法很昂贵。 这种情况似乎并不需要额外的开销,但选择只是你的。