在MongoDB集合上使用find方法



我正在学习MEAN stack教程。它包含以下代码作为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操作中看到对第三个参数的引用,那么为什么这里允许一个呢?

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

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

任何澄清将不胜感激!

第一个参数是查询。

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

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

表示只获取匹配文档中的itemqty字段

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

游标有各种方法,可用于在mongoDB返回匹配的文档之前操作它们。收集。查找({数量:{$gt: 25}},{项目:1,数量:1})是一个游标,您可以对其进行各种操作。

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

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

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

相关内容

  • 没有找到相关文章

最新更新