嵌入文档中的mongodb限制

2024-05-13

我需要创建一个消息系统,一个人可以在其中与许多用户进行对话。 例如,我开始与 user2、user3 和 user4 交谈,因此他们中的任何人都可以看到整个对话,并且如果对话在任何时候都不是私密的,则任何参与者都可以将任何其他人添加到对话中。

这是我的想法如何做到这一点。 我正在使用 Mongo,我的想法是使用对话框作为实例而不是消息。

架构如下:

{
_id : ...., // dialog Id
'private' : 0 // is the conversation private
'participants' : [1, 3, 5, 6], //people who are in the conversation
'msgs' :[
  {
   'mid' : ...// id of a message
   'pid': 1, // person who wrote a message
   'msg' : 'tafasd' //message
  },
  ....
  {
   'mid' : ...// id of a message
   'pid': 1, // person who wrote a message
   'msg' : 'tafasd' //message
  }
]
}

我可以看到这种方法的一些优点 - 在大型数据库中,很容易找到某些特定对话的消息。 - 将人员添加到对话中会很容易。

但这是一个问题,我找不到解决方案: 对话变得太长(以 Skype 为例),他们没有向您显示所有对话,而是向您显示一部分,然后向您显示其他消息。 在其他情况下跳过,限制可以解决问题,但我在这里该怎么做呢?

如果这是不可能的,您有什么建议?


MongoDB 文档 https://web.archive.org/web/20111129115718/http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields解释如何选择数组元素的子范围。

db.dialogs.find({"_id": [dialogId]}, {msgs:{$slice: 5}}) // first 5 comments
db.dialogs.find({"_id": [dialogId]}, {msgs:{$slice: -5}}) // last 5 comments
db.dialogs.find({"_id": [dialogId]}, {msgs:{$slice: [20, 10]}}) // skip 20, limit 10
db.dialogs.find({"_id": [dialogId]}, {msgs:{$slice: [-20, 10]}}) // 20 from end, limit 10

您可以使用此技术仅选择与您的 UI 相关的消息。但是,我不确定这是否是一个好的架构设计。您可能需要考虑将“可见”消息与“存档”消息分开。它可能会使查询变得更容易/更快。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入文档中的mongodb限制 的相关文章

  • Solr 错误 - 流主体被禁用

    我正在从浏览器 URL 中删除文档 我正在使用 Solr 7 4 0 我正在使用此查询来删除文档 http localhost 8983 solr test update stream body
  • 致命错误 - 未找到“Mongo”类

    我正在尝试执行此操作 但我收到以下错误 致命错误 在 C wamp www 中找不到类 Mongo Info PHP 5 38 MongoDB mongodb win32 i386 2 0 2 MongoDB PHP 驱动程序 mongo
  • 错误:键 $conditionalHandlers 不得以 '$' mongodb 开头

    我对 mongodb 特别是 Node js 的 mongoose 包有疑问 我有以下架构 var Schema mongoose Schema var location new Schema nomville type String re
  • mongodb 正在运行吗?

    我已经在我的 Unix 服务器上安装了 Mongodb 和 PHP 驱动程序 我的问题是如何判断 Mongodb 是否正在运行 是否有一个简单的命令行查询来检查状态 如果我从外壳程序启动一次 如果我退出外壳程序 它会继续运行 情况似乎并非如
  • Mongoose 4.4.12 中 Schema 方法范围内的“this”为空 {}

    当在 Schema 方法内记录到控制台时 对象 this 为 这发生在一天前 我一直在阅读教程和其他堆栈溢出问题 但不幸的是我没有找到原因的解决方案 这是我的模型 var mongoose require mongoose var Sche
  • mongoengine 操作的原子性如何

    我正在尝试在对象的状态之间转换 如下所示 User objects id user id state STATE WAITING update one set state STATE FINISHED The question是 是否存在这
  • 将 Django +1.10 与 MongoDB 连接

    在过去的几个月里 有人为 MongoDB 更换了 Django 1 10 中的默认数据库引擎吗 我在谷歌上得到的所有信息都是六四年前的 最常见的结果包括mongodb 引擎这需要Django nonrel 来自 Django 1 5 的一个
  • MongoDB 中两个集合之间的 Diff()

    我做过研究 如果这是一个重复的问题 我很抱歉 但其他问题的解决方案并不适合我 因此 我提出了一个新问题 使用 Javascript 比较两个集合的最佳方法是什么 我有数千个这样的 Mongo 文档格式的标头 url google com h
  • MongoDB Java 驱动程序:MongoCore 驱动程序与 MongoDB 驱动程序与 MongoDB 异步驱动程序

    MongoDB Java 驱动程序有三种不同的驱动程序选项 核心驱动 MongoDB 驱动程序 MongoDB 异步驱动程序 The 驱动程序描述页面 https docs mongodb org ecosystem drivers jav
  • Django:无法为用于检索数据的模型实例化抽象模型

    我正在开发一个项目 该项目有一个 Djongo 抽象模型和一个主模型 当我尝试插入一个值时 它被插入而没有错误 但是当我尝试检索数据时 我得到 抽象模型无法实例化 这是我的模型 class Exam questions models Mod
  • 如何确定 STARTUP2 BTree Bottom Up 步骤的总体进度?

    确定新次要成员的初始同步 STARTUP2 的索引构建阶段的总体进度的好方法是什么 在我的例子中 索引构建阶段需要很长时间 几天 如果能够看到它在这个过程中的进度 那就太好了 日志输出如下所示 Tue Jan 27 20 04 45 006
  • 尝试使用 Mongoose 进行批量更新插入。最干净的方法是什么?

    我有一个集合 其中包含包含三个字段的文档 名字 姓氏和年龄 我试图找出 Mongoose 中的哪个查询可以用来进行批量更新插入 我的应用程序偶尔会收到具有相同三个字段的新对象数组 我希望查询检查文档中是否已存在名字和姓氏 如果存在 则更新年
  • 访问 Amazon EC2 上的 Mongodb 时出现问题

    我还有一个问题要问你 我有安装了 mondodb 的 Amazon EC2 实例 它工作得很好 除了一件事 我无法从外部 我的电脑 访问 连接到 它 我认为安全组的问题 这是某种默认防火墙 有谁知道如何配置EC2实例来访问mongodb 提
  • 如何在 Mongoose.js 查询中执行大于语法

    如何获得适用于此 Mongoose 查询的 大于 语法 var where where id req wine id where sameAs undefined where scoreTotal gt 0 THIS NEEDS TO SE
  • MongoDb Spring 在嵌套对象中查找

    我正在使用 Spring Data Mongodb 和这样的文档 id ObjectId 565c5ed433a140520cdedd7f attributes 565c5ed433a140520cdedd73 333563851 list
  • 为什么MongoDB不使用复合索引进行查询?

    以下是我对此集合的复合索引和单一索引 db Collection getIndexes 1 v 2 key id 1 name id ns service Collection 2 v 2 key FirstId 1 SecondId 1
  • 如何在 mongo shell 查询中仅投影嵌套数组的匹配字段

    我对 mongodb 相当陌生 我希望这是一个简单的问题 我有一个嵌套架构 其中有一个数组字段 其中该数组的每个项目都是一个本身具有数组字段的对象 例如 gt db mytest insert name a top x 1 y 2 nest
  • MongoDB 全文搜索分数“分数是什么意思?”

    我正在为我的学校开发一个 MongoDB 项目 我有一个句子集合 我进行正常的文本搜索以查找集合中最相似的句子 这是基于评分的 我运行这个查询 db sentences find text search any text score met
  • 如何通过引用文档查询嵌入文档?

    我正在使用 Doctrine ODM 但在通过引用文档查询嵌入文档时遇到问题 考虑以下文件
  • Mongodb 的 Mongoose 与 Mongoose

    我正在学习 NodeJ 要从 NodeJS 连接并使用 MongoDB 我看到很多使用 Monk 或 Mongoose 的示例 这两个库等效吗 它们具有相同的功能还是都有特定的用途 作为 NodeJS 的初学者 我应该使用哪个 以下是使用

随机推荐

  • Java 执行器和长寿命线程

    我继承了一些使用 Executors newFixedThreadPool 4 的代码运行 4 个长寿命线程来完成应用程序的所有工作 这是推荐的吗 我读过Java 并发实践 https rads stackoverflow com amzn
  • 使用32位应用程序获取syswow64目录

    我正在尝试在系统目录中查找文件 问题是当使用 Environment SystemDirectory 在 x64 计算机上 我仍然获得 System32 目录 而不是 Systemwow64 目录 我需要在 x86 机器上获取 System
  • sed 合并由空行分隔的 N 个文本行?

    我搜索了一下 但没有找到针对这种特定情况的解决方案 给定一个输出任意数量的非空行组的管道 这些非空行组分隔成单个空行 是否有一个 sed 单行代码 或 awk 单行代码或 perl 单行代码 将非空行组组合成单行 同时保留空白行 例如 输入
  • 无法在 Swift 中创建文件路径

    我尝试在 Swift 中打开该文件 为此 我创建了文件路径 这不起作用 maaaacy pwd Users tsypa maaaacy cat a txt test maaaacy a swift nil maaaacy 剧本 usr bi
  • 从多个大型 NetCDF 文件中提取数据的快速/高效方法

    我只需要从全局网格中提取特定节点集的数据 由纬度 经度坐标 按 5000 10000 的顺序 给出 这些数据是水力参数的时间序列 例如波高 全局数据集很大 因此分为许多 NetCDF 文件 每个 NetCDF 文件大小约为 5GB 包含整个
  • 如何获取在代码中 attrs.xml 中创建的枚举

    我创建了一个自定义视图 找到它here https bitbucket org informatic0re awesome font iconview 具有枚举类型的可声明样式属性 在 xml 中 我现在可以为我的自定义属性选择枚举条目之一
  • 读取所有进程内存以查找字符串变量c#的地址

    我有 2 个用 C 编写的程序 第一个名为 ScanMe 的程序包含一个包含值 FINDMEEEEEEE 的字符串变量 以及一个值为 1546 22915487 的双精度变量 另一个名为 MemoryScan 的程序读取第一个程序的所有内存
  • 专家 C#/.Net/WPF 开发人员应该了解哪些知识? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ggplot堆叠条 - 隐藏标签但保留标签位置

    我在 ggplot 中有一个堆积条形图 其中 geom text 标签位于每个条形的中心 我想隐藏小条上的标签 以便图表看起来不会过于拥挤 我可以使用下面的代码来完成此操作 但它会弄乱标签的位置 正如您在下面的链接图片中看到的那样 它们不再
  • 如何使用包含的转换的排名来比较两个标准转换序列

    include
  • Drive.Permissions.insert(值)-Drive API,您可以在“值”下使用数组吗?

    是否可以在此处使用 值 下的数组来阻止我创建组别名电子邮件地址 例如 userValues email protected cdn cgi l email protection email protected cdn cgi l email
  • 使用 TStringList 的分隔符解析字符串,似乎也解析空格(Delphi)

    我有一个简单的字符串 由某个字符分隔 比如说逗号 我应该能够创建一个 TStringList 并将其分隔符设置为逗号 然后将 DelimitedText 设置为我想要解析的文本 并且应该自动解析它 问题是 当我查看输出时 它还包含空格作为分
  • 在 C# 中加密并在 Flex 中解密

    我需要解密 Flex 中的一些数据 这些数据是用 C 加密并写入文件的 为了简单起见 我选择使用 as3crypto As3 库和 Bruce Schneier C 库 AS3 as3加密链接 http code google com p
  • 是否可以存根实体框架上下文和类来测试数据访问层?

    我熟悉用于测试 ASP NET MVC 应用程序中的控制器和业务逻辑的技术 我们的应用程序中的数据访问集中在松散耦合的特殊服务中 使用接口并通过实体框架与实际数据库一起使用 然而 随着 DAL 变得越来越复杂 隐藏数据库实现细节并为应用程序
  • 为什么 MISRA:2012 需要函数原型?

    我想知道为什么 MISRA 2012 需要函数原型 在下面的示例中 这两个原型并不是真正必要的 include
  • 可空日期列合并问题

    我在 Geronimo 应用程序服务器上使用 JPA 和下面的 openjpa 实现 我也在使用MySQL数据库 我在更新具有可为空 Date 属性的对象时遇到问题 当我尝试合并 Date 属性设置为 null 的实体时 不会生成 sql
  • Struts html:text 标签内的 HTML5 占位符

    我在 Web 应用程序中使用 Struts 1 3 10 并且希望我的文本字段有一个占位符 不幸的是 当前的 Struts taglib 无法识别此属性 如果可能的话 我希望避免使用 javascript 你知道有什么解决办法吗 Strut
  • 在 MongoDb 上序列化仅获取属性

    使用 C 6 我可以写 public class Person public Guid Id get public string Name get public Person Guid id string name Id id Name n
  • 如何在 Xamarin.Mac 中执行终端命令并读入其输出

    我们正在编写一个 Xamarin Mac 应用程序 我们需要执行像 uptime 这样的命令 并将其输出读取到应用程序中进行解析 这可以做到吗 在 Swift 和 Objective C 中都有 NTask 但我似乎无法在 C 中找到任何示
  • 嵌入文档中的mongodb限制

    我需要创建一个消息系统 一个人可以在其中与许多用户进行对话 例如 我开始与 user2 user3 和 user4 交谈 因此他们中的任何人都可以看到整个对话 并且如果对话在任何时候都不是私密的 则任何参与者都可以将任何其他人添加到对话中