在mongodb中应用find操作后,我得到了下面的文档列表。
db.users.find(....)
我得到:
{ "text" : "Hey" } { "text" : "Hi" } { "text" : "Hello" } { "text" : "yes" }
我怎样才能把它转换成
["Hey","Hi","Hello","yes"].
我试过了
db.users.find(...).map( function(u) { return "u.text"; } )
但它正在给出错误!
4urapxun1#
一开始,db.users.find(...).map()不起作用,因为db.users.find(...)不会返回一个真实的数组。所以首先需要转换成数组。
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
thigvfpy2#
另一个选择是简单地使用distinct:
distinct
db.users.distinct("first_name");
将返回:
[ "John", "Jennifer", ... ]
0ejtzxu13#
您可以使用
var u=db.users.find({...},{text:1,_id:0}) while(u.hasNext()){print(u.Next().text);}
kxxlusnw4#
正确答案是.distinct()(docs)方法在您的情况下,请尝试以下操作:
.distinct()
db.users.find(....).distinct('text')
只会传回值。
fcipmucu5#
最好的方法是:
db.users.distinct("text"); ["Hey","Hi","Hello","yes"].
您将在此处获得有关此主题的更多信息:mongodb distinct
hi3rlvi26#
不确定你的语言实现是什么,但基本概念是:
var result = [] db.users.find().forEach(function(u) { result.push(u.text) })
result的返回值为:
result
["Hey","Hi","Hello","yes"]
6条答案
按热度按时间4urapxun1#
一开始,
db.users.find(...).map()
不起作用,因为db.users.find(...)
不会返回一个真实的数组。所以首先需要转换成数组。
那么如果你应用map()函数将起作用
另一个简单的技巧是使用.forEach()
这就行了
thigvfpy2#
另一个选择是简单地使用
distinct
:将返回:
0ejtzxu13#
您可以使用
kxxlusnw4#
正确答案是
.distinct()
(docs)方法在您的情况下,请尝试以下操作:
只会传回值。
fcipmucu5#
最好的方法是:
您将在此处获得有关此主题的更多信息:mongodb distinct
hi3rlvi26#
不确定你的语言实现是什么,但基本概念是:
result
的返回值为: