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