在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"; } )
但它给出了错误!
答案 0 :(得分:11)
不确定您的语言实现是什么,但基本概念是:
var result = []
db.users.find().forEach(function(u) { result.push(u.text) })
返回result
的值为:
["Hey","Hi","Hello","yes"]
答案 1 :(得分:6)
首先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
答案 2 :(得分:2)
你可以使用
var u=db.users.find({...},{text:1,_id:0})
while(u.hasNext()){print(u.Next().text);}
答案 3 :(得分:2)
另一种选择是简单地使用distinct
:
db.users.distinct("first_name");
会返回:
[
"John",
"Jennifer",
...
]
答案 4 :(得分:0)