2014-05-15 17 views
6

Dopo aver applicato l'operazione di ricerca in MongoDB .. io ottenere il seguente elenco di documenti ..Come restituire solo il valore di un campo nel MongoDB

db.users.find(....) 

ho ottenuto:

{ "text" : "Hey" } 
{ "text" : "Hi" } 
{ "text" : "Hello" } 
{ "text" : "yes" } 

Come può a convertire in

["Hey","Hi","Hello","yes"]. 

ho provato

db.users.find(...).map(function(u) { return "u.text"; }) 

ma sta dando errore!

+0

e in SQL (al contrario di "NoSQL"), lo fai come? Questo in realtà è ** modo ** per ampliare una domanda per essere costruttivi per chiunque qui oltre ad essere impossibile senza post-elaborazione in qualsiasi ambiente. –

+0

scusa, ma non ti ho preso .. cosa stai cercando di dire – shashank

+0

ho provato db.users.find (...). Map (function (u) {return "u.text";}) ma sta dando errore! – shashank

risposta

8

Non sicuro di ciò che l'implementazione della lingua è, ma il concetto di base è:

var result = [] 
db.users.find().forEach(function(u) { result.push(u.text) }) 

E il valore restituito al result è:

["Hey","Hi","Hello","yes"] 
3

All'inizio db.users.find(...).map() non ha funzionato perché db.users.find(...) non restituisce un array reale.

Quindi è necessario convertire in array in un primo momento.

db.users.find(...).toArray() 

Poi se si applica mappa() funzione opera

db.users.find(...).toArray().map(function(u) { return u.text ; }) 

Un altro trucco semplice sta usando .forEach()

Questo farà il trucco

var cursor = db.users.find(...); // returns cursor object which is a pointer to result set 

var results = []; 
cursor.forEach(
    function(row) { 
    results.push(row.text); 
    }); 

results //results will contain the values 
2

è possibile utilizzare

var u=db.users.find({...},{text:1,_id:0}) 
while(u.hasNext()){print(u.Next().text);} 
Problemi correlati