Как получить значение поля в 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",
  ...
]