在一个查询中从三个不同的不相关集合中检索数据

问题描述 投票:-1回答:1

问题:

我正在使用Node MongoDB驱动程序。我正在尝试确定是否应该编写一个查询来从三个集合中获取数据,还是数据库是否需要一个包含引用或嵌入式文档等的集合……将这三个不相关的集合联接在一起。

用户案例:

[在搜索过程中,我得到了一个对象数组,我从数组中取出了前10个对象,每个对象都是有关属于三个集合之一的文档的元数据。集合不相关,但是具有一些公共字段,并且此元数据是在后续阶段获取信息的唯一方法。

例如,在搜索过程中,我以React状态获取并存储此数组(请参见下面的示例对象),然后,当用户单击搜索结果时,我必须在该数组内循环,以便可以获取相关数组元数据,以便能够检索更多内容...

对象数组内的示例对象(元数据):

[{
  collection: 'pmc_test',
  id_field: 'id_int',
  id_type: 'int',
  id_value: 2657156
},
{
  collection: 'arxiv',
  id_field: 'id_int',
  id_type: 'int',
  id_value: 2651582
},
{
  collection: 'crossref',
  id_field: 'DOI',
  id_type: 'string',
  id_value: "10.1098/rsbm.1955.0005"
},
 ...] // different collections, usually passed with 10 objects

但是首先要显示10个搜索结果,我必须遍历数组中的每个对象,修改并运行查询,这可能会导致10个单独的查询。因此,我至少可以通过使用$ in运算符执行3个查询,并提供代表每个集合的三个ID数组来最小化此问题。

这仍然是多个查询,我必须先去第一个集合,然后去第二个集合,再去第三个集合,然后将所有结果组合在一起以显示搜索结果。这就是我要避免的事情。这就是三个集合的大致外观。

enter image description here

关于我可以使用哪种查询方法的任何建议?如果数据库具有一个单一的集合/方法,该数据库将避免不得不使用元数据查看三个不同的集合,是否将从中受益?

[当前,这是对应用程序的重大突破,导致至少15个功能/ api调用需要更新,我想保持查询一个集合并将其建议为最佳更改的能力。

提前感谢。

node.js database mongodb nosql node-mongodb-native
1个回答
0
投票

您可以通过mongodb聚合来执行所有这些操作,在您的情况下,查找和分组阶段将适用,请进一步共享每个集合的(1个文档)json数据,以便于指导

© www.soinside.com 2019 - 2024. All rights reserved.