- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
首先要说的是,我是 MongoDb 和一般面向文档的数据库的新手。
在 mongodb 中嵌入文档出现一些问题后(无法仅选择嵌套文档(博文中的单个评论示例)),我重新设计了数据库。现在我有两个集合,帖子和评论(不是真正的交易,为了方便起见使用博客示例)。
示例 - 帖子集合文档:
数组{
'_id' : MongoId,
'title' : 'Something',
'body' : 'Something awesome'
示例 - 评论文档:
数组{
'_id' : MongoId,
'postId' : MongoId,
'userId' : MongoId,
'commentId' : 33,
'comment' : 'Punch the punch line!'
如您所见,我有多个评论文档(如前所述,我希望能够选择单个评论,而不是一组评论)。
我的计划是这样的:我想使用 postId 和 commentId 从集合中选择单个评论(commentId 仅在具有相同 postId 的评论中是唯一值)。哦,commentId 需要是一个 int,这样我就可以使用该值来计算下一个和上一个文档,类似于“orderWith”数字。
现在我可以得到这样的评论了:
URI: mongo.php?post=4de526b67cdfa94f0f000000&comment=4
代码:$comment = $collection->findOne(array("postId"=> $theObjId, "commentId"=> (int)$commentId));
我有几个问题。
最佳答案
Am I doing it right?
这是一个非常困难的问题。它有效吗?它是否满足您的性能需求,您是否愿意维护它?
MongoDB 没有任何“规范化”或“唯一正确的方式”的概念。您以适合自己的方式对数据建模。
What is the best way to generate that kind of commentId? What is the best way to ensure that commentId is unique among comments with the same postId (upsert?)?
这真是一个复杂的问题。如果你想生成单调递增的整数 ID(如自动递增),那么你需要一个中央机构来生成这些整数。这往往无法很好地扩展。
通常建议的方法是使用 ObjectId/MongoId。这将为您提供一个唯一的 ID。
但是,您确实需要一个整数。所以看看findAndModify .您可以在帖子中保留“last_comment_id”,然后在创建新评论时更新它。
How to deal with concurrent queries?
为什么并发查询会成为问题?两个读者应该能够访问相同的数据。
您是否担心创建并发评论?然后查看查找修改文档。
关于php - MongoDB (PHP) - 自定义 "id"和 OrderWith 编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6216078/
我使用 Faker gem 来播种某些数据。我怎样才能设置最大。假公司名称的长度,如何设置假号码的范围? name = Faker::Company.name 这里我想包括最大长度,因为名称对最大长
我试图实现一种方法,在该方法中我创建一个记分板(while 循环)并按某个数字字段(点)对获取的结果进行排序。但我需要实现的是如下 rank----username--point 1st------t
如何在 ListView (vsReport) 中对项目进行编号?现在我有类似的东西: Item := ListView1.Items.Add; Item.Caption :=inttostr(Ite
我正在尝试使用几个按钮在红色和绿色之间切换,我已经浏览了 Jquery 文档,但我似乎无法弄清楚这个。 您可以在我的代码片段中看到,当我单击按钮时,所有按钮都会变成不同的颜色。 而且必须有一种更短的方
是否可以在 GROUP_CONCAT 中进行编号 喜欢 如果,来自 GROUP_CONCAT(empnam SEPARATOR ', ') 我有一套, 我需要 我试过跟随,但没有得到想要的结
在 Linux 中,如何使用用户指定的事件编号创建输入事件接口(interface)并将其映射到特定的设备事件? 我正在使用 gpio-keys 驱动程序来翻译键盘上的按键操作。我定义了要在我的板配置
对于低级应用程序,我在编译时将某种索引定义为一种类型: template class Idx{ using TYPE = T_; static const int IDX = IDX_; }
请问如何设置这种格式的编号: 1) number 1 2) number 2 3) ... 在 HTML 中? 我只找到了一种获取这种格式的方法: 1. number 1 2. number 2 3.
对于我的研究,我需要很少的数据,其中之一是前一次提交的 SHA 编号,即如果我提供特定的提交编号/SHA 编号,我应该能够获得它之前的 SHA 编号。 帮我用 git 命令来获得相同的结果。 最佳答案
我需要询问何时按下数字 1 键,而不是在数字键盘上,而是在 Q 上方的数字 1(试图使这尽可能清楚)。 我已经浏览了 Keys 数组上所有可用的键,但没有一个匹配我正在寻找的键。 有没有办法做到这一点
我正在尝试使用 NAnt 任务设置构建服务器。我有几个想要构建的 Git 存储库,但我在结果的版本控制方面遇到了问题。 如何对库 (dll) 进行版本控制,以便每个构建都使用一个数字来表示每个版本?我
我有一个如下所示的表格: +-------+--------+--------+ | Grp | Party | Member | +-------+--------+--------+ | F
我正在使用 SQL Server 2008。我在查询中返回了这些数据,看起来非常像按 Day 和 ManualOrder 排序的... ID Day ManualOrder Lat L
区域:Silverlight 中的文本框 问题:我需要知道当前编辑的是什么“行号”。 我试过:作为一种解决方法,我尝试使用 textBox.Split("\r") 进行拆分,并计算 Regex 上具有
提前致歉,我不确定如何将 null 值添加到 pandas 数据框,所以我在列表中放置了“无”。我有一个具有以下值的数据框: None, None, 50,60,70,80,90,None,None,
我的应用程序中有一个标签,其中会带有徽章编号,该标签基于3个不同时间发生的3种不同操作。我知道如何使用以下方式设置标签栏标志: [[[[[self tabBarController] tabBar]
有谁知道为什么我们的供应商需要我们的 sku 编号来开发新应用程序? 我们自己将应用程序带入应用程序商店,也许我错了,但构建应用程序或将其上传到商店不需要 sku - 它仅在 iTunes 中连接而不
这个问题已经有答案了: Rationale for Matcher throwing IllegalStateException when no 'matching' method is called
我使用[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]清除徽章编号。它工作正常,但同时删除了远程通知。 还有许多其
我有一个待办事项列表应用程序,我想在图标徽章中显示未完成任务的数量。 我的问题是:我是否应该在用户每次在应用程序中删除/添加新任务时更新徽章编号,还是仅在应用程序即将进入后台模式时更新徽章编号? 最佳
我是一名优秀的程序员,十分优秀!