2015-04-21 27 views
10

Voglio solo sapere che è possibile selezionare campi specifici utilizzando la linea di galleggiamento, la query orientdb è riportata di seguito.Selezionare campi specifici dal database

e.g. 
select phone from user 

voglio selezionare telefono da vertici degli utenti, usando questa query

userModel.find(phone) 
.then(function(phonelist){ 
    if(!phonelist) 
    console.log('msg: RECORD_NOT_FOUND'); 
    else 
    console.log(phonelist); 
.catch(function(err){ console.log('err: 'err'); }); 

risposta

20

Sì, è possibile, basta aggiungere select ai criteri di ricerca, per esempio (supponendo che si sta cercando un record con id 1):

userModel.find({ select: ['phone'], id: 1 }) 

o in alternativa:

userModel.find({ select: ['phone'], where: { id: 1 } }) 

o se si desidera che tutti i record, non c'è bisogno di fornire criteri:

userModel.find({ select: ['phone'] }) 

questo non sembra essere documentato da altre ma dovrebbe. Nella versione 0.11 sarà anche possibile definire selezionare facendo model.pick('name', 'age'): https://github.com/balderdashy/waterline/pull/952

+0

Questo non funziona per me in Waterline 0.10.21, ottengo tutti i campi senza alcuna selezione :(- Spero che 0.11 sia rilasciato presto! –

+0

@FranDios, stai usando le vele-mongo? Se così fosse bug che è stato corretto e rilasciato solo 8 giorni fa (v0.11.3). –

+0

Sì, io uso vele-mongo. Grazie per le informazioni, lo controllerò :) –

3

Fonte e maggiori dettagli-https://stackoverflow.com/a/24170388/1392194

Sì, è possibile, ma non con select come è ancora in sviluppo. Ma c'è un modo per raggiungerlo usando fields.

Model.find({ id: id }, { 
    fields: { 
    name: 1, 
    phoneNumber: 1 
    } 
}).limit(1).exec(function(...) {}; 

Ciò non funzionerà con findOne.

Problemi correlati