在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
方法是如何被调用的。 具体来说,我有以下问题:
-
什么对象被传递来
function(e, docs)
作为它的参数? -
function(e, docs)
是MongoDB语法的一部分吗? 我看过Mongo CRUD操作的文档,找不到它的参考。 看起来像Mongo.find
操作的标准语法是collection.find({},{}).someCursorLimit()
。 我没有看到在.find
操作中的第三个参数的.find
,那么为什么在这里允许一个? -
如果
function(e, docs)
不是MongoDB操作,它是否是Monk API的一部分? -
从教程中可以明显看出,这个代码块返回集合中的所有文档,并将它们放置在一个对象中,称为“品牌”。 但是,在这个过程中,
function(e, docs)
扮演什么angular色呢?
任何澄清将不胜感激!
第一个参数是查询。
第二个参数(可选)是投影,即如果你想限制匹配文件的内容
collection.find( { qty: { $gt: 25 } }, { item: 1, qty: 1 },function(e,docs){})
将意味着在匹配的文档中只获取item
和qty
字段
第三个参数是查询完成后调用的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行。