当前位置: 首页 > 知识库问答 >
问题:

如何查询具有关系的不同集合?

陈马鲁
2023-03-14
people_collection (people.csv file):

{
 id: MongoDB ID("84932809849329043"),
 person_id: 1
 name: Foo
}
addresses_collection (addresses.csv file):
{
 id: MongoDB ID("904389408904311"),
 addresses_id: 1,
 addresses_info: street 1 number 100, turkey,
 person_id: 1
}
{
 id: MongoDB ID("72910890434331"),
 addresses_id: 2,
 addresses_info: street 1999 number 595, japan,
 person_id: 1
}
people = [1, 2]

2-查询id为1的人的所有地址,2我想:

people_addresses = {1: list_of_addresses_person_1, 2: list_of_addresses_person_2}

好的方法是什么?

共有1个答案

洪博涛
2023-03-14

您在这里所做的是将关系模式直接导入MongoDB中,这通常不是最优的。使用MongoDB,您可以创建更复杂的嵌套文档,因此不需要求助于经典的规范化表。

在您的示例中,您可以将地址直接嵌入到people文档中:

{
    people_id: 1,
    name: "Foo",
    addresses : [
      { 
         address_info : "....."
      },
      {
         address_info : "....."
      }
    ]
}

这种模式的优点是,您不需要在人员和他们的地址之间执行联接--他们总是出现在一个文档中。通常应该根据您的数据访问模式选择模式,但在这种特殊情况下(人们往往只有很少的地址,而且地址可能不在人与人之间共享),几乎可以保证上述模式更适合MongoDB。

 类似资料:
  • 我是新来laravel的,所以原谅我可能的愚蠢问题。此外,我确实研究了所有其他“类似”的问题,但要么它们没有重现正确的解决方案,要么我真的很难理解。 情景: 我有一个帖子模型和一个主题模型。这就是他们现在的样子。 在岗位上。php 在主题上。php 现在,我需要实现的是: 如果将查询参数传递给请求(即q=Food),我只想返回在主题关系中包含主题食物的帖子,而不返回其他帖子。如果什么都没有通过,那

  • 我有两个模型。模型有一个(关系)。 关于模型,我有以下关系:

  • 问题内容: 我有一个类似(简化)的表结构: 内容 content_has_content topic_has_content 任何主题都可以具有多个“内容”,任何“内容”都可以具有多个“子内容”(内容实例)。对于给定的id_topic,我想从链接的内容,子内容,子内容的子内容等中接收所有my_string1的列表。 我了解“ WITH”不适用于mysql,但找不到很好的递归替代方法。 谢谢丹尼尔

  • 我有一张这样的桌子: MySQL>按id限制11从MyTable顺序中选择id、书籍、章节、段落、RevisionNum; 要找到没有未修改段落的书籍或章节,我希望查询该章节或书籍的所有不同id的最大值的最小值,或者以某种方式确定没有id保持未编辑(MAX(RevisionNum)为零)。 我的大多数约会尝试都以这样的错误告终: ...而我根本就没有使用“group by”函数! 下面的查询生成结

  • 我在一家保险公司工作,必须创建一个类似这样的报告:Excel文档中的数据是如何在SSR上的 我的问题是,我不知道如何计算不同列中不同的引用、绑定和提交的#,因为它们都是从同一个字段中提取的

  • 考虑到我有一个FixSturyQueQue1,它返回10个文档和另一个查询QuyR2,返回15个文档,但是这15, 5个文档中的时间对于QueRe1和QueRe2都是通用的。对于第二个查询,在支持持久性的平台中,读取计数是10还是15?