How to return only value of a field in mongodb

39,332

Solution 1

Not sure what you language implementation is but the basic concept is:

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

And the returned value to result is:

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

Solution 2

At first db.users.find(...).map() didn't work because db.users.find(...) doesn't return you a real array.

So you need to convert to array at first.

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

Then if you apply map() function will work

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

Another simple trick is using .forEach()

This will do the trick

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

Solution 3

Another option is simply to use distinct:

db.users.distinct("first_name");

Would return:

[
  "John",
  "Jennifer",
  ...
]

Solution 4

you can use

var u=db.users.find({...},{text:1,_id:0})
while(u.hasNext()){print(u.Next().text);}
Share:
39,332
Admin
Author by

Admin

Updated on January 10, 2021

Comments

  • Admin
    Admin over 3 years

    After applying the find operation in mongodb.. i get the following list of documents..

      db.users.find(....)
    

    i got:

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

    How can i convert it into

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

    i tried

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

    but it is giving error!