我有集合A,它引用了集合B。A的少数文档可能不包含B引用。A[ { _id:1 Name:“abc”B:DBRef('B ','4sd567fgv5b78n899')},{ _id:2 Name:“def”} ]
B{ _id:ObjectId('4sd567fgv5b78n899 ')Type:“alpha”}
我必须在B不存在的情况下获取所有A,或者如果存在,则只获取那些B.Type==“alpha”的情况。我的应用程序有Mongo模板和mongoRepository。
我尝试从B集合中获取所有id 1st,其中B.Type==“alpha”,然后使用orOperator从A集合中获取记录,其中B为null或A.B in(从上面的查询中获取所有id)。它需要大约7秒来获取10 k记录,这是不可行的,而且我获取数据的方式也不是正确的方式。
1条答案
按热度按时间laximzn51#
您可以使用聚合中的查找从引用文档中获取数据。您还需要记住,如果您遇到性能问题,您已经添加了适当的索引。
字符串