Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在查询mongodb之前,我是否应该考虑从$in ID中筛选$nin ID?_Node.js_Mongodb_Benchmarking - Fatal编程技术网

Node.js 在查询mongodb之前,我是否应该考虑从$in ID中筛选$nin ID?

Node.js 在查询mongodb之前,我是否应该考虑从$in ID中筛选$nin ID?,node.js,mongodb,benchmarking,Node.js,Mongodb,Benchmarking,因此,我有一个some node.js代码,其中mongodb的id为$in和$nin “$nin”的列表实际上比“$in”的列表大得多 在“我的实现”中,我以“简单的方式”将两个ID列表传递给mongodb: query={{u-id:{$in:in\u-list,$nin:not\u-in\u-list} 然后我的同事来了,从“$in”列表中删除了所有“$nin”ID,只查询了$in in_list=u。区别在_list中,而不是在_list中 查询={u id:{$in:in{u list

因此,我有一个some node.js代码,其中mongodb的id为$in和$nin

“$nin”的列表实际上比“$in”的列表大得多

在“我的实现”中,我以“简单的方式”将两个ID列表传递给mongodb:

query={{u-id:{$in:in\u-list,$nin:not\u-in\u-list}

然后我的同事来了,从“$in”列表中删除了所有“$nin”ID,只查询了$in

in_list=u。区别在_list中,而不是在_list中
查询={u id:{$in:in{u list}

我的假设是,mongodb足够聪明,可以比node.js更快、更有效地处理这个问题,但我不知道这种差异是否可以测量和/或显著


任何输入?

是,$in将更快。任何一个查询都需要扫描结果集中的每个文档,因此,如果完成$in查询所需的项目数少于$nin查询所需的项目数,请使用该查询。

为什么不测试这两种方法并比较性能?我希望在基准测试方面有丰富经验的人能够为我们提供一种很好的基准测试方法。目前,我只能以1000倍的速度运行它们并进行比较,但我怀疑这不是“正确的方式”!?这基本上归结为哪一个更适合你处理数据。通过网络发送所有结果,以便查询优化器提取列表中的差异,或者在客户端计算出差异。这可能取决于列表的大小。你把你的发现作为你的答案,并把它作为基准,怎么样。其他人可能会发现它很有用。顺便说一句,你的评论回复来自两位经验丰富的人。我没有考虑网络延迟/成本(很明显!!)这个应用程序将运行数年,对于活跃用户来说,这个列表将变得相当大。我相信在“代码”上处理它们(与mongo相反)是正确的,因为我们已经为这个集群进行了自动伸缩,mongodb只有少量固定数量的实例。这不是它的工作方式。优化器将以与建议的客户端操作类似的方式否定列表。她的e所面临的唯一问题是,通过网络将所有这些信息发送到服务器来完成这项工作,或者让功能较弱的客户机来处理这些代码,成本会更高。人们普遍怀疑,网络成本大于客户端处理速度较慢的成本。但这并不像你所说的那样“相交”两个结果集。啊,这很有趣。我不知道优化器会这么做,但这是有道理的。谢谢你的提示。