2014-05-15 14 views
6

Sau khi áp dụng các hoạt động tìm trong MongoDB .. tôi nhận được danh sách sau đây của tài liệu ..Làm thế nào để trở lại chỉ có giá trị của một trường trong MongoDB

db.users.find(....) 

tôi đã nhận:

{ "text" : "Hey" } 
{ "text" : "Hi" } 
{ "text" : "Hello" } 
{ "text" : "yes" } 

thế nào có thể i chuyển đổi nó thành

["Hey","Hi","Hello","yes"]. 

tôi đã cố gắng

db.users.find(...).map(function(u) { return "u.text"; }) 

nhưng nó đang đưa ra lỗi!

+0

Và trong SQL (như trái ngược với "NoSQL"), bạn làm điều đó như thế nào? Điều này thực sự là ** cách ** để mở rộng một câu hỏi được xây dựng cho bất cứ ai ở đây cũng như không thể mà không cần xử lý bài viết trong bất kỳ môi trường nào. –

+0

xin lỗi, nhưng tôi đã không nhận được bạn .. những gì bạn đang cố gắng để nói – shashank

+0

tôi đã thử db.users.find (...). Bản đồ (chức năng (u) {return "u.text";}) nhưng nó đang đưa ra lỗi! – shashank

Trả lời

8

Không chắc chắn việc triển khai ngôn ngữ của bạn là gì nhưng khái niệm cơ bản là:

var result = [] 
db.users.find().forEach(function(u) { result.push(u.text) }) 

Và giá trị trả về để result là:

["Hey","Hi","Hello","yes"] 
3

Lúc đầu, db.users.find(...).map() không hoạt động vì db.users.find(...) không trả lại cho bạn một mảng thực.

Vì vậy, bạn cần phải chuyển đổi thành mảng lúc đầu tiên.

db.users.find(...).toArray() 

Sau đó, nếu bạn áp dụng bản đồ() chức năng sẽ làm việc

db.users.find(...).toArray().map(function(u) { return u.text ; }) 

Một mẹo đơn giản là sử dụng .forEach()

này sẽ làm các trick

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

bạn có thể sử dụng

var u=db.users.find({...},{text:1,_id:0}) 
while(u.hasNext()){print(u.Next().text);} 
Các vấn đề liên quan