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

jdw*_*jdw 6 node.js node-mongodb-native mean-stack monk

我正在通过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
            });
        });
    });
Run Code Online (Sandbox Code Playgroud)

我想修改此代码,但我不完全了解如何.find调用该方法.具体来说,我有以下问题:

  1. 传递什么对象function(e, docs)作为其参数?

  2. 是function(e, docs)MongoDB语法的一部分吗?我查看了有关Mongo CRUD操作的文档,但找不到对它的引用.似乎Mongo .find操作的标准语法是collection.find({},{}).someCursorLimit().我没有在.find操作中看到对第三个参数的引用,为什么一个允许在这里?

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

  4. 从教程中可以清楚地看出,这段代码返回集合中的所有文档,并将它们作为名为"品牌"的属性放在对象中.但是,function(e, docs)在这个过程中,具体扮演什么角色呢?

任何澄清将非常感谢!

ma0*_*a08 12

第一个参数是查询.

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

collection.find( { qty: { $gt: 25 } }, { item: 1, qty: 1 },function(e,docs){})
Run Code Online (Sandbox Code Playgroud)

意味着只获得匹配文档中的item和qty字段

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

该鼠标具有可用于操纵匹配的文档的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){
       ...
   })
Run Code Online (Sandbox Code Playgroud)

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

所有这些东西都在文档中给出.我认为最好使用mongoose而不是本机驱动程序,因为它的功能和受欢迎程度.