在Monk上使用MongoDB集合上的find方法

我正在通过一个MEAN堆栈教程 。 它在index.js包含以下代码作为路由。 我的Mongo系列的名字是brandcollection

 /* GET Brand Complaints page. */ router.get('/brands', function(req, res) { var db = req.db; var collection = db.get('brandcollection'); collection.find({},{},function(e,docs){ res.render('brands', { "brands" : docs }); }); }); 

我想修改这个代码,但是我不完全理解.find方法是如何被调用的。 具体来说,我有以下问题:

  1. 什么对象被传递来function(e, docs)作为它的参数?

  2. function(e, docs)是MongoDB语法的一部分吗? 我看过Mongo CRUD操作的文档,找不到它的参考。 看起来像Mongo .find操作的标准语法是collection.find({},{}).someCursorLimit() 。 我没有看到在.find操作中的第三个参数的.find ,那么为什么在这里允许一个?

  3. 如果function(e, docs)不是MongoDB操作,它是否是Monk API的一部分?

  4. 从教程中可以明显看出,这个代码块返回集合中的所有文档,并将它们放置在一个对象中,称为“品牌”。 但是,在这个过程中, function(e, docs)扮演什么angular色呢?

任何澄清将不胜感激!

第一个参数是查询。

第二个参数(可选)是投影,即如果你想限制匹配文件的内容

 collection.find( { qty: { $gt: 25 } }, { item: 1, qty: 1 },function(e,docs){}) 

将意味着在匹配的文档中只获取itemqty字段

第三个参数是查询完成后调用的callback函数。 function(e, docs)是node.js语法的mongodb驱动程序。 第一个参数e是错误。 docs是匹配文档的数组。 如果发生错误,则在e给出。 如果查询成功,则在第二个参数文档中给出匹配的文档(名称可以是任何你想要的)。

在mongoDB返回之前, 游标有多种方法可以用来处理匹配的文档。 collection.find({qty:{$ gt:25}},{item:1,qty:1})是一个可以对其进行各种操作的游标。

 collection.find( { qty: { $gt: 25 } }, { item: 1, qty: 1 }).skip(10).limit(5).toArray(function(e,docs){ ... }) 

这意味着您将跳过前10个匹配的文档,然后返回最多5个文档。

所有这些东西都在文档中给出。 我认为最好是使用mongoose,而不是原生的驱动程序,因为function和stream行。