我正在使用MongoDB,我最终得到了两个集合(无意中)。
第一次收集(样本)有1亿条记录(推文),结构如下:
{
"_id" : ObjectId("515af34297c2f607b822a54b"),
"text" : "bla bla ",
"id" : NumberLong("314965680476803072"),
"user" :
{
"screen_name" : "TheFroooggie",
"time_zone" : "Amsterdam",
},
}
第二个集合(用户)拥有来自tweet集合的3000万条独特用户记录,看起来是这样的
{ "_id" : "000000_n", "target" : 1, "value" : { "count" : 5 } }
用户集合中的_id是来自推文集合的user.screen_name,目标是他们的状态(是否作弊用户),最后value.count是我们第一个集合(样本)集合中出现的用户数量(例如捕获的推文数量)
现在我想提出以下问题:
我想返回用户目标值为1的示例集合(tweets)中的所有文档
换句话说,我想返回所有垃圾邮件发送者的所有推文。
当你收到tweet时,你可以将它们上传到一个集合中。使用作者信息作为更新的“查询”文档部分的键。更新文档可以利用$addToSet
操作符将tweet放入tweets数组。您将得到一个包含作者和一系列tweet的集合。然后,您可以为每个作者进行垃圾邮件发送者分类,并获得他们的相关推文。
所以,你最终会做这样的事情:
db.samples.update({"author":"joe"},{$addToSet:{"tweets":{"tweet_id":2}}},{upsert:true})
这种方法确实有一个可能的缺点,即文档的增长超过了最初在磁盘上分配的大小,这意味着它将在磁盘上移动和扩展。您可能会因为索引更新而受到一些惩罚。
您还可以采取一种方法,在每个tweet文档中存储垃圾邮件评级,然后根据用户id提取这些评级。
正如其他人所指出的,设置适当的索引并使用光标循环查看用户的推文没有错。
您选择的方法应该基于您预期的访问模式。听起来你在一个好地方,你可以尝试几种不同的可能的解决方案。
问题内容: 我有一个带有两个自定义管理器方法的Django模型。每个对象都基于对象的不同属性返回模型对象的不同子集。 有没有什么方法可以获取一个查询集,或者只是一个对象列表,那就是每个管理器方法返回的查询集的并集? 问题答案: 这可以工作,看起来更干净: 如果你不希望重复,则需要添加:
问题内容: 我是Firestore的新手。我想通过使用ID按联接查询从其他集合中获取名称。我该怎么办? 这是一些样本集合。 我有两个集合。员工和部门。 我想查询员工集合,并想添加部门文档作为响应的一部分。这是我尝试获取的示例响应。 这是我获取员工数据的示例代码。 如何为该员工添加部门对象? 问题答案: Firestore没有联接查询。如果要合并两个文档中的数据,则必须分别查询它们,然后根据两个文档
问题内容: 我有一个库存表,我想创建一个报告,以显示订购商品的频率。 “库存”表: 基本上,我需要将这两个查询结合在一起。 查询打印库存余额: 打印销售统计信息的查询 我认为某种JOIN可以完成这项工作,但我不知道如何将查询粘合在一起。 所需的输出: 这仅是示例。也许我将需要添加更多条件,因为有更多列。是否存在将多个查询组合在一起的通用技术? 问题答案:
我想做的是用同一个键查询Firebase中的两个值。我的数据库是这样的: 我在我的Android项目中编写了一个查询来检索具有相同语言的所有文档,并且它有效。 但是现在我想做的是,寻找“en”和“fr”。 我在网上搜索过,但没有发现任何积极的方面。
问题内容: 我正在尝试搜索我正在构建的Django网站,在该搜索中,我正在搜索3种不同的模型。为了在搜索结果列表上进行分页,我想使用一个通用的object_list视图来显示结果。但是要做到这一点,我必须将3个查询集合并为一个。 我怎样才能做到这一点?我已经试过了: 但这是行不通的。当我尝试在通用视图中使用该列表时出现错误。该列表缺少克隆属性。 有谁知道我如何合并三个列表和? 问题答案: 将查询集
我有两个查询,它们都是分开工作的,但是当我尝试统一下摆时,我只有问题。 查询1: 查询 2: 如何根据(内部一)统一它们?