sha*_*ank 11 javascript database mongodb nosql
在mongodb中应用查找操作后,我得到以下文档列表..
db.users.find(....)
Run Code Online (Sandbox Code Playgroud)
我有:
{ "text" : "Hey" }
{ "text" : "Hi" }
{ "text" : "Hello" }
{ "text" : "yes" }
Run Code Online (Sandbox Code Playgroud)
我怎么能把它转换成
["Hey","Hi","Hello","yes"].
Run Code Online (Sandbox Code Playgroud)
我试过了
db.users.find(...).map( function(u) { return "u.text"; } )
Run Code Online (Sandbox Code Playgroud)
但它给出了错误!
Nei*_*unn 12
不确定您的语言实现是什么,但基本概念是:
var result = []
db.users.find().forEach(function(u) { result.push(u.text) })
Run Code Online (Sandbox Code Playgroud)
返回的值result是:
["Hey","Hi","Hello","yes"]
Run Code Online (Sandbox Code Playgroud)
起初 db.users.find(...).map()没有用,因为db.users.find(...)没有给你一个真正的数组.
所以你需要先转换为数组.
db.users.find(...).toArray()
Run Code Online (Sandbox Code Playgroud)
然后,如果你应用map()函数将工作
db.users.find(...).toArray().map( function(u) { return u.text ; } )
Run Code Online (Sandbox Code Playgroud)
另一个简单的技巧是使用.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
Run Code Online (Sandbox Code Playgroud)
小智 6
另一种选择是简单地使用distinct:
db.users.distinct("first_name");
Run Code Online (Sandbox Code Playgroud)
会返回:
[
"John",
"Jennifer",
...
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28274 次 |
| 最近记录: |