MongoDB能否创建多集合索引(或搜索)?

5
我有一个应用程序,它使用文本索引查询MongoDB数据库,需要从多个集合中返回对象,就像Instagram查询同时查找人、标签或位置一样。我正在寻找一种方法,可以将这些集合正常分开,但是只使用单个MongoDB索引来索引三个集合。我一直在寻找这个功能,但是我发现的都是在同一集合内使用多列索引和复合索引。在MongoDB上是否可能实现此目标?而不需要创建另一个集合来存储所有对象呢?如果不行,我能否使用类似全文和地理位置索引的相似索引来查询多个集合?

1
在MongoDB中是否可能创建多集合索引? -> 不可能 - ares
1
为什么要将集合分开呢?如果使用情况是要一起查询它们呢? - Wan B.
@WanBachtiar 这些是不同的对象。我想在Mongo上使用的“query-all”对象功能与Lucene索引中常见的用例相同,您可以查询整个文本索引,然后发现它属于哪个集合... - ViniciusPires
过了一会儿,我认为问题仍然存在。我正在比较使用neo4j和MongoDB(项目首选项),我恰好到了这里。Lucene能够索引多个节点类型,而每个集合代表不同类型节点的索引需要分别维护,而我的搜索将不得不遍历所有节点/文档...因此在这里Neo4J获胜! - David SCHERRER
1个回答

1

MongoDB大多数情况下不提供跨集合的通信,主要是为了保持高可用性和可扩展性。($lookup是个例外)

所以,不支持在不同集合之间进行索引跨度?不支持在不同集合之间进行连接(至少对于健康使用来说是不支持的)。触发器?不支持(尚未支持)。事务?不支持。

如果按照关系型数据库最佳实践使用MongoDB,那将会很混乱。学会去规范化。


2
我认为你误解了我的意思。我所询问的与关系型数据库最佳实践无关...更像是Lucene/Solr最佳实践(也适用于其他全文搜索引擎),我想要索引来自不同对象的文本并查询它们,之后可以区分它们的类型... - ViniciusPires
1
我有类似的需求@ViniciusPires,你知道如何实现吗? - Ajay Sharma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接