Mongodb “如何搜索”;“参考很多”;按文档数组的字段
我们在文档中有一个referenceMany字段。在db中,它成为被引用文档的ID数组 @MongoDB\ReferenceMany(targetDocument=“GeoLocation”,storeAs=“id”,simple=true) 现在,我们希望在此集合中搜索引用文档A、B或C的文档 1)第一个直观的方法是执行类似于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,但
$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方法是否有文档记录,没有找到它。如果有人能指出一些关于这个技巧的文档,那将非常有帮助