2014-11-13 13 views
8

Ich benutze die folgende Mungo-Abfrage in einer MEAN-Umgebung, um einen bestimmten Autor und seine entsprechenden Bücher zu finden und auszugeben.Mongoose/Mongodb: Felder von aufgefüllten Abfragedaten ausschließen

Author 
.findOne({personcode: code}) 
.select('-_id') 
.select('-__v') 
.populate('bookids') //referencing to book documents in another collection (->array of bookids) 
.select('-_id') //this doens't affect the data coming from the bookids-documents 
.select('-__v') //this doens't affect the data coming from the bookids-documents 
.exec(function (err, data) { 
    //foo 
}); 

Ich mag auch die „_id“ auszuschließen und „__v“ Felder aus den besiedelten Daten aus den externen Dokumenten kommen. Wie kann das erreicht werden?

Antwort

22

Der zweite Parameter von populate ist ein Feldauswahlleiste, so können Sie dies tun können, wie:

Author 
    .findOne({personcode: code}) 
    .select('-_id -__v') 
    .populate('bookids', '-_id -__v') 
    .exec(function (err, data) { 
    //foo 
}); 

Beachten Sie, dass Sie Ihre Feldauswahl in einem einzelnen String kombinieren sollte.

+0

great! Danke vielmals. funktioniert gut =) –

0

Dank JohnnyHK und für Objektparameter dies funktioniert:

Entity.populate({ 
    path: 'bookids', 

    // some other properties 
    match: { 
     active: true 
    }, 
    // some other properties 

    select: '-_id -__v' // <-- this is the way 
}).then(...) // etc 
Verwandte Themen