javascript - mongoose設計 - 安裝mongoose




Mongoose使用.select()方法 (5)

我對select方法的使用感到很困惑。 這是我使用它的方式,這是錯誤的:

Transaction.find({username : user.username}).select('uniqueId', 'confirmation_link', 'item_name', 'timeout', 'username', function(err, txs){
        callback(txs);
});

我想要實現的只是從數據庫中的事務中選擇具有該用戶名的事務,我想只取出select方法中列出的字段。 任何人都可以指出我應該如何使用select方法? 謝謝。


docs說你可以這樣做:

貓鼬v4.0

// Retrieving only certain fields

Model.find({}, 'first last', function (err, docs) {

});

舊的過時的API

// Retrieving only certain fields

Model.find({}, ['first', 'last'], function (err, docs) {
  // docs is an array of partially-`init`d documents
  // defaults are still applied and will be "populated"
});

所以你可以不用select()來做到這一點。


現在有一種更短的方法(不使用.select而不使用數組),只是將空格分隔為空格作為第二個參數

User.find({}, 'first last', function (err, usr) {
    //Got the result, saved a few bytes of code
});

文件


要檢索某些字段而不檢索“_id”,您可以指定將其排除

Model.find({}, {'Username':1, '_id':0}, function ( err, docs ){}.....

這是另一種方式: 在mongoose中查詢

Transaction.find({username : user.username})
.select('uniqueId confirmation_link item_name timeout username')
.exec(function(err, txs) {
        console.log(txs);
});

選擇和投影操作可以在nodejs中以這種方式輕鬆完成。 嘗試這個

    var Selection={
        <some key of data model > : <target value for that key field>,
        <some key of data model > : <target value for that key field>
        //you can add many parameters here selection operation
        };
    var Projection = {
        __v    : false,
        _id    : false
        //you can add many parameters here for projection
    };
    <DataModel>.find(Selection,Projection,function (err,data) {
        if(err){
            console.log(err);
        }else{
         console.log(data);
        }
    });






mongoose