Mongodb 嵌套对象的投影、过滤和排序是否需要很多性能?
我有一个Mongodb 嵌套对象的投影、过滤和排序是否需要很多性能?,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我有一个数据库,包含5000万个文档,每个文档都有一个对象字段,其中包含几十个其他嵌套对象。基本上,此字段是转换为对象的XML文件。我用aggregate()和find()进行了一些测试,但是我注意到,投影和过滤这个字段会带来很大的性能损失。 比如说 $cursor = $db->find(array( 'id_empresa' => 7, 'tipo_doc' => 'nfe', 'xml.NFe.inf
数据库
,包含5000万个文档,每个文档都有一个对象
字段,其中包含几十个其他嵌套对象。基本上,此字段是转换为对象的XML
文件。我用aggregate()
和find()
进行了一些测试,但是我注意到,投影和过滤这个字段会带来很大的性能损失。
比如说
$cursor = $db->find(array(
'id_empresa' => 7,
'tipo_doc' => 'nfe',
'xml.NFe.infNFe.emit.xNome' => ['$regex' => 'auto', '$options' => 'i'],
'$and' => array(['$or' => array(
['xml.NFe.infNFe.emit.xNome' => ['$regex' => 'me', '$options' => 'i']],
['xml.NFe.infNFe.dest.xNome' => ['$regex' => 'me', '$options' => 'i']],
['xml.NFe.infNFe.transp.transporta.xNome' => ['$regex' => 'me', '$options' => 'i']]
)])
), array(
'limit' => 100,
'sort' => ['xml.NFe.infNFe.emit.xNome' => 1],
'projection' => array(
'id_empresa' => 1,
'tipo_doc' => 1,
'_id' => 1,
'xml.NFe.infNFe.emit.xNome' => 1,
'xml.NFe.infNFe.ide.nNF' => 1,
'xml.NFe.infNFe.dest.xNome' => 1,
'xml.NFe.infNFe.transp.transporta.xNome' => 1,
)
));
在本例中,该对象只有4个投影场,但在大多数情况下,投影场约为20~40个
在使用这些嵌套对象时,有没有办法获得更好的性能