采取以下模型:
一个问题(比如,一个堆栈问题!)
Question {
_id : ObjectId(123),
Question : "MongoDB: Count number of referenced items",
Tags : [ObjectId(1), ObjectId(2), ObjectId(3)]
}
标签表
Tag{
_id : ObjectId(1),
tag : "MongoDB",
description : "stuff"
},
{
.... more tags
}
我想列出所有标签,并在每个标签旁边显示该标签使用次数的计数。然后,您可以单击标签进行编辑,如下所示:
MongoDB (1232)
C# (23232)
什么是最强大的方法来做到这一点。我调查了以下内容。
聚合框架。这使我能够计算 ObjectId 在 Question 表中出现的次数,但我没有简单的方法来获取标签的名称。我想我将不得不进行另一个数据库调用,获取所有标签然后将它们映射在一起。
在标签表上有一个 COUNT,每次我提交问题时检查是否添加或删除了标签,然后增加或减少这个计数器。我似乎无法让我的大脑接受这是一个很好的方法。
[编辑-见评论]
- 在问题中存储标签名称。使用标签名称为 Id。这将使#1 工作得更好。但是标签名称可能会改变,所以我想这会产生连锁反应。
人们会推荐其中哪些(以及为什么)。有没有我错过的策略?
我正在使用 C# 的 mongo 驱动程序