我的意思是全局搜索是在指定集合中搜索文档,例如,在用户和组织集合中搜索名称,并将返回符合条件的用户和组织文档。
是否可以简单地将用户和组织中的文档复制到另一个集合中并在其中进行搜索?
不,不可能自动进行多集合搜索。但是,您没有理由不能对多个集合执行相同的查询并组合结果。
虽然您可以将数据复制到另一个集合以进行查询,但如果您需要保证源集合的值与“索引”集合完全匹配,您需要将自己的多阶段事务(示例)实现为 MongoDb没有多集合原子提交。或者,您可以接受“索引”表可能不同步的事实。当然,它可以通过自定义代码定期更新。此外,这意味着您的工作集随着您双重存储数据而增加。此外,如果您随后需要从单个集合中获取数据(以获取更多的源文档),那么与一开始执行多个查询相比,您可能一无所获,并且使事情变得更糟。
您可以将相关文档存储在同一个集合中,并利用提供的内置索引。当然,这附带一个警告,如果您的文档现在是键入的,您可能会发现构建高效的 MongoDb 索引更具挑战性。每个更改/新文档都必须通过索引管道,这可能会引入大量开销。
如果只是几个集合,我只会进行多次搜索而不会更深入地了解您的需求。如果没有,第二个最好的方法是将文档合并到一个集合中。最后的选择是复制数据。