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!
When you use methods such as find() or findOne() in MongoDB, by default you get the whole document returned. And if you use projections, you can return specific key/value pairs. But what if you only want the value? You can extract the value of a field by appending that field's name to your query when using findOne() .
You can select a single field in MongoDB using the following syntax: db. yourCollectionName.
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"]
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With