使用 C# / ASP.net MVC 建模 NoSQL 论坛应用程序

2023-12-26

我目前正在开发一个基于论坛(问题/答案)的应用程序。
使用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(使用前将#替换为@)

使用 C# / ASP.net MVC 建模 NoSQL 论坛应用程序 的相关文章

随机推荐

  • 导入 igraph 时出错

    在 python 中导入 igraph 时 出现错误 见下文 由于 igraph 不是 anaconda 的一部分 因此我执行了以下概述的安装步骤 libglpk 35 dylib是什么 我应该如何加载它 为什么会出现这个问题 igraph
  • Visual Studio 可扩展性,如何枚举解决方案中的项目?

    只是想加快 SDK 的使用速度 所以 我创建了自己的工具窗口 现在我想迭代当前加载的解决方案中的现有项目并在工具窗口中显示它们的名称 但不太确定枚举项目的最佳方式是什么 有什么线索吗 检查这个微软的代码 https github com M
  • 使用 OpenCV 生成鸟瞰图/顶视图

    我正在尝试从图像生成鸟瞰图 对于相机的内在特性和变形 我使用的是从驾驶模拟器中检索到的硬编码值 该模拟器的顶部安装了相机 代码的基础来自 使用 OpenCV 库学习 OpenCV 计算机视觉 第 409 页 当我在包含每行 3 个内角 每列
  • ggplot 指定分类 x r 的垂直线段的位置

    我正在绘制行数据 并为统计计算的拟合值添加了一段可信区间和一个黑点 我的问题是我想让这些线 和黑点 相对于行数据稍微移动 水平 我尝试了抖动及其所有可能的组合 结果很糟糕 因为我从不同的列中获取了 y start 和 end 的值 因此 由
  • 泛型中奇怪的嵌套结构类型

    有人可以解释一下嵌套在泛型中的结构类型的奇怪构造吗 implicit def Function1Functor R Functor type R gt new Functor type R gt 这个例子来自Scalaz库 函子 scala
  • 毫秒是python中箭头时间库的一个特性吗

    使用这种方法 arrow utcnow format YYYY MM DD HH mm ss 或者箭头中类似的东西是否可以将毫秒添加到时间中 事实上 您最多可以使用 6 位数字来表示秒的小数部分 gt gt gt now arrow utc
  • 使用正则表达式有效测试“EndsWith”

    我需要构建一个正则表达式 NET 语法 来确定字符串是否以特定值结尾 具体来说 我需要测试文件是否具有特定扩展名 或一组扩展名 我试图修复的代码使用的是 png jpg gif 在我的场景中 对于失败的匹配来说 速度非常慢 可能是由于回溯
  • 工作表、单元格和范围的默认范围是什么?

    当您仅键入 worksheets 时 默认范围 ActiveWorkbook 或 ThisWorkbook 是什么 对于那些不了解这些区别的人来说 它们非常重要 尤其是在 Excel 2013 中 当您希望在切换到不同工作簿时运行宏时 在标
  • 如何高效调试webpack应用?

    我正在尝试在我的项目中采用 webpack 开发服务器 我知道它被广泛采用 因此令我惊讶的是调试应用程序似乎非常困难 由于 webpack 默认情况下会生成一个巨大的包 因此源映射是必须的 我对他们有一个很大的问题 根据devtool模式下
  • 用索引展平嵌套列表

    给定一个任意大小的任意深度嵌套列表的列表 我想要一个对树中所有元素进行平面 深度优先的迭代器 但也具有路径索引 使得 for x y in flatten L x L y 0 y 1 y 1 That is L 1 2 3 4 5 6 7
  • RxJava 缓冲区直到更改

    我有一个可观察的对象 它会发出大量数据 例如 1 1 1 2 2 2 3 3 1 1 5 5 在RxJava中我们可以使用直到改变 http reactivex io documentation operators distinct htm
  • jQuery 获取多个属性

    我有一个元素需要获取一组特定属性 例如 div class myClass div 在这个例子中 我需要获取所有data 属性并将它们放入数组 名称和值对 中 在此示例中 最终数组将如下所示 myDataArray data country
  • 在运行时更改 Swift 中文本字段的键盘类型

    我想知道是否有一种方法可以检查文本字段是否包含特定字符 如果是这种情况 请更改显示的键盘类型 这是我尝试过的 但无法改变 这是当编辑文本字段发生更改时发生的操作 IBAction func decOrNot sender Any let c
  • iPhone SDK:如何将视频文件下载到文档目录然后播放?

    我已经在这个代码上闲逛了很多年了 如果有人可以提供从服务器下载此文件的代码示例 我将非常感激http www archive org download june high june high 512kb mp4 http www archi
  • 为什么“git commit”不保存我的更改?

    I did a git commit m message 像这样 gt git commit m save arezzo files On branch master Changes not staged for commit use gi
  • 如何从 PHP 中的 301 重定向下载链接获取图像?

    我正在尝试下载this http minecraft net skin Notch png使用 PHP 生成图像 然后使用 GD 对其进行编辑 我找到了很多图片链接的解决方案 但这个是下载链接 Edit curl curl init htt
  • 将键值对添加到哈希数组中的所有哈希中

    我有一个哈希数组 results a 1 b 2 a 3 b 4 我想向所有哈希添加一个元素 c 所以我最终得到 results a 1 b 2 c newvalue a 3 b 4 c newvalue 我正在尝试一种比循环遍历数组并逐一
  • 当块在 RStudio 的 R Notebook 中运行时,如何打印 tibbles?

    我无法通过在 RStudio 中的 R Notebook 中运行块来打印由下面的 CSV 文件创建的 Tibble 以下示例打印有关从 read csv 进行解析的消息 但不打印 df 但是 当我预览笔记本时 会打印数据框 使用 R 控制台
  • “执行安装操作”时构建延迟了一分钟

    今天 我的构建突然开始需要很长时间才能在我的 iPad 上安装和启动 使用 XCode 7 在 执行安装操作 阶段 它会挂起大约一分钟 然后当设备上显示启动屏幕时 应用程序还需要大约一分钟才能启动 应用程序启动后 可以正常运行 没有任何问题
  • 使用 C# / ASP.net MVC 建模 NoSQL 论坛应用程序

    我目前正在开发一个基于论坛 问题 答案 的应用程序 使用C ASP net MVC和MongoDB进行数据存储 我目前正在看模型 我正在考虑有这样的单独的课程 简化 public class Question public string I