问题:
我正在使用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数组来最小化此问题。
这仍然是多个查询,我必须先去第一个集合,然后去第二个集合,再去第三个集合,然后将所有结果组合在一起以显示搜索结果。这就是我要避免的事情。这就是三个集合的大致外观。
关于我可以使用哪种查询方法的任何建议?如果数据库具有一个单一的集合/方法,该数据库将避免不得不使用元数据查看三个不同的集合,是否将从中受益?
[当前,这是对应用程序的重大突破,导致至少15个功能/ api调用需要更新,我想保持查询一个集合并将其建议为最佳更改的能力。
提前感谢。
您可以通过mongodb聚合来执行所有这些操作,在您的情况下,查找和分组阶段将适用,请进一步共享每个集合的(1个文档)json数据,以便于指导