我目前正在开发一个基于论坛(问题/答案)的应用程序。
使用C# ASP.net MVC和MongoDB进行数据存储。
我目前正在看模型。
我正在考虑有这样的单独的课程:(简化)
public class Question
{
public string ID { get; set; }
public string Title { get; set; }
public string Body { get; set; }
public List<string> Tags { get; set; }
public DateTime DateCreated { get; set; }
public string ForumID { get; set; }
}
Answer
public class Answer
{
public string ID { get; set; }
public string QuestionID { get; set; }
public string Body { get; set; }
public DateTime DateCreated { get; set; }
}
我的问题是:
如何处理“回复”
我最好拥有(如上面的模型)两个独立的“实体”吗?
或者我应该在我的问题模型中有一个答案列表?
一些要求是我需要能够显示答案的数量等......
由于它存储在 NoSQL 数据库中,我知道我应该对事物进行非规范化,但是如何在不检索整个帖子的情况下插入答案呢?使用 NoRM 和 MongoDB 可以实现这种操作吗?
通常在 MongoDB 中,您会将答案嵌入到问题中。 99% 的情况下您都会通过问题进行查询,因此您最好同时获得答案。
一些要求是我需要能够显示答案的数量......
如果你带回问题的答案,这真的很容易。您将拥有一个包含答案的数组/列表/集合。所以你只需抓住长度即可。
但如何在不检索整个帖子的情况下插入答案
MongoDB 支持原子“$push”操作。这意味着您可以将项目添加到数组中,而无需实际从客户端加载文档。从 javascript shell 来看,它看起来像这样:
db.questions.update( {_id : your_id}, { $push : { answers : your_answer_object } } );
所以 MongoDB 能够做到这一点。您必须检查 NoRM 驱动程序,以确保它们实际上允许这种类型的行为(如果它们不支持 $push,它们确实会丢失一些东西)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)