6

私はMEAN スタック チュートリアルに取り組んでいます。次のコードが route in として含まれています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 操作に関するドキュメントを見てきましたが、参照が見つかりませんでした。.findまた、Mongo操作の標準的な構文はcollection.find({},{}).someCursorLimit(). 操作で3 番目のパラメーターへの参照を見たことがないのに、.findなぜここで許可されているのですか?

  3. function(e, docs)MongoDB 操作でない場合、それは Monk API の一部ですか?

  4. チュートリアルから明らかなように、このコード ブロックはコレクション内のすべてのドキュメントを返し、それらを「ブランド」という属性としてオブジェクトに配置します。function(e, docs)しかし、その過程で具体的にどのような役割を果たしているのでしょうか?

説明をいただければ幸いです。

4

1 に答える 1

12

最初のパラメーターはクエリです。

2 番目のパラメーター (オプション) は射影です。つまり、一致したドキュメントの内容を制限したい場合です。

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

一致したドキュメントの フィールドitemとフィールドのみを取得することを意味しますqty

3 番目のパラメーターは、クエリが完了した後に呼び出されるコールバック関数です。function(e, docs)node.js 構文の mongodb ドライバーです。第 1 パラメーターeはエラーです。docs一致したドキュメントの配列です。エラーが発生した場合は、 に記載されていeます。クエリが成功すると、一致したドキュメントが 2 番目のパラメーターで指定されます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){
       ...
   })

つまり、一致した最初の 10 個のドキュメントをスキップし、最大 5 個のドキュメントを返します。

これらはすべてdocsに記載されています。ネイティブドライバーよりもmongooseの方が機能も人気もあると思います。

于 2014-08-03T19:06:45.087 に答える