【问题标题】:Using the find method on a MongoDB collection with Monk使用 Monk 对 MongoDB 集合使用 find 方法
【发布时间】:2014-09-26 06:56:26
【问题描述】:

我正在通过MEAN stack tutorial 工作。它包含以下代码作为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) 在这个过程中具体扮演了什么角色?

任何澄清将不胜感激!

【问题讨论】:

    标签: node.js mean-stack node-mongodb-native monk


    【解决方案1】:

    第一个参数是查询。

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

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

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

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

    cursor 有多种方法可用于在 mongoDB 返回匹配的文档之前对其进行操作。 集合.find({数量:{$gt:25}},{项目:1,数量:1}) 是一个光标,你可以对它进行各种操作。

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

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

    所有这些东西都在the docs 中给出。由于功能和受欢迎程度,我认为最好使用mongoose 而不是本机驱动程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多