Как получить значение поля в MongoDB
после применения операции поиска в MongoDB.. я получаю следующий список документов..
db.users.find(....)
Я:
{ "text" : "Hey" }
{ "text" : "Hi" }
{ "text" : "Hello" }
{ "text" : "yes" }
как я могу преобразовать его в
["Hey","Hi","Hello","yes"].
пробовал
db.users.find(...).map( function(u) { return "u.text"; } )
но это дает ошибку!
4 ответов
не уверен, что вы языковая реализация, но основная концепция:
var result = []
db.users.find().forEach(function(u) { result.push(u.text) })
и возвращаемое значение result
- это:
["Hey","Hi","Hello","yes"]
сначала db.users.find(...).map()
не работает, потому что db.users.find(...)
не возвращает вам реальный массив.
поэтому сначала вам нужно преобразовать в массив.
db.users.find(...).toArray()
тогда, если вы примените функцию map (), будет работать
db.users.find(...).toArray().map( function(u) { return u.text ; } )
еще один простой трюк использует .forEach ()
это сделает трюк
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
можно использовать
var u=db.users.find({...},{text:1,_id:0})
while(u.hasNext()){print(u.Next().text);}
другой вариант-просто использовать distinct
:
db.users.distinct("first_name");
вернутся:
[
"John",
"Jennifer",
...
]