Mongodb “如何搜索”;“参考很多”;按文档数组的字段

Mongodb “如何搜索”;“参考很多”;按文档数组的字段,mongodb,symfony,doctrine,Mongodb,Symfony,Doctrine,我们在文档中有一个referenceMany字段。在db中,它成为被引用文档的ID数组 @MongoDB\ReferenceMany(targetDocument=“GeoLocation”,storeAs=“id”,simple=true) 现在,我们希望在此集合中搜索引用文档A、B或C的文档 1)第一个直观的方法是执行类似于$queryBuilder->field('geo')->引用([A,B,C]) 但“引用”似乎只接受单个文档,而不接受它们的数组 2)另一种直观的方法是使用->in,但

我们在文档中有一个referenceMany字段。在db中,它成为被引用文档的ID数组

@MongoDB\ReferenceMany(targetDocument=“GeoLocation”,storeAs=“id”,simple=true)

现在,我们希望在此集合中搜索引用文档A、B或C的文档

1)第一个直观的方法是执行类似于
$queryBuilder->field('geo')->引用([A,B,C])

但“引用”似乎只接受单个文档,而不接受它们的数组

2)另一种直观的方法是使用->in,但它只接受值,不接受引用

3)我们最不想做的事情就是使用ORs的组合。我们应该避免它,因为它似乎会产生低效的查询(这只是我们的猜测)


问题是,编写这样一个查询的最佳方式是什么?

这比我想象的要简单

只需使用ID数组在
表达式中引用带有的字段,即可进行字段搜索

$qb=$this->createQueryBuilder();
foreach($documents as $document) {
    $geoIds[] = $document->getId();
}
$qb->field('targetGeo')->in($geoIds);
我们一直在寻找解决方案,因为基于OR的查询(选项3)似乎没有使用索引


我不知道这个->in方法是否有文档记录,没有找到它。如果有人能指出一些关于这个技巧的文档,那将非常有帮助。

这比我想象的要简单

只需使用ID数组在
表达式中引用带有的字段,即可进行字段搜索

$qb=$this->createQueryBuilder();
foreach($documents as $document) {
    $geoIds[] = $document->getId();
}
$qb->field('targetGeo')->in($geoIds);
我们一直在寻找解决方案,因为基于OR的查询(选项3)似乎没有使用索引

我不知道这个->in方法是否有文档记录,没有找到它。如果有人能指出一些关于这个技巧的文档,那将非常有帮助