Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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
Javascript 猫鼬链式查询_Javascript_Mongodb_Mongoose_Functional Programming - Fatal编程技术网

Javascript 猫鼬链式查询

Javascript 猫鼬链式查询,javascript,mongodb,mongoose,functional-programming,Javascript,Mongodb,Mongoose,Functional Programming,我现在正在读书 使用mogoose执行查询似乎有两种主要的不同方式,一种是使用链式表示法,更具“功能性”。 我的问题是,这种以空.find()方法开头的表示法是开始导入所有集合,然后过滤应用程序内的连续指针,还是编译查询(mongoDB实例上的过滤内容)并仅在本地执行回调 基于点的表示法看起来不错而且更干净,但是如果在发出请求之前没有编译过滤器,那么在应用程序上为每个简单的查询导入整个集合似乎不是一个好主意。我说得对吗 如果是这样的话,我们是否处于这样一种情况,即我们必须支持对象合成而不是函数合

我现在正在读书

使用mogoose执行查询似乎有两种主要的不同方式,一种是使用链式表示法,更具“功能性”。
我的问题是,这种以空
.find()
方法开头的表示法是开始导入所有集合,然后过滤应用程序内的连续指针,还是编译查询(mongoDB实例上的过滤内容)并仅在本地执行回调

基于点的表示法看起来不错而且更干净,但是如果在发出请求之前没有编译过滤器,那么在应用程序上为每个简单的查询导入整个集合似乎不是一个好主意。我说得对吗


如果是这样的话,我们是否处于这样一种情况,即我们必须支持对象合成而不是函数合成(如Eric Elliott所说),或者这不是重点?

当然,整个集合不会导入到应用程序中。想象一下,对于每个请求,整个10GB数据库都被加载到内存中。您的Mongoose查询将转换为本机MongoDB查询并传递给驱动程序。数据库引擎执行此任务,然后仅返回匹配的文档。find()调用创建并返回查询对象,但它实际上并不执行查询,除非您向其传递回调。然后,您可以链接此查询上的其他方法调用以优化或修改它。当一切就绪时,您可以使用exec()或then()执行它。