2010-08-29 27 views
21

Các khái niệm cơ bản về tập lệnh MongoDB là gì?Khái niệm cơ bản về tập lệnh MongoDB - Cách thực hiện

Tôi nghĩ rằng kịch bản sẽ kết thúc với .js, và chúng tôi chạy nó bằng cách sử mongo try.js

Nhưng nếu tôi đặt

print(db.foo.find()) 

trong try.js và sử dụng mongo try.js

nó sẽ nói

MongoDB shell version: 1.6.1 
connecting to: test 
DBQuery: test.foo -> undefined 

và nếu tôi là chúng tôi e vỏ tương tác bằng cách gõ mongo và loại

> db.foo.find() 
{ "_id" : ObjectId("4c7a73428261000000003a7e"), "a" : 1 } 
> print(db.foo.find()) 
DBQuery: test.foo -> undefined 

các {a : 1} là cái gì tôi chèn trước đó sử dụng db.foo.insert({a:1})

những cách thích hợp làm MongoDB Scripts và làm thế nào để in những điều trên như một Ruby irb hoặc Python là gì IDLE? cảm ơn. (Ruby puts a.inspect hoặc p a có thể vừa in ra toàn bộ cấu trúc của a thường (tất cả các tên biến và giá trị trong a))

alert(db.foo.find())console.log(db.foo.find()) sẽ không hoạt động hoặc.

+3

tôi thấy rằng tôi có thể in mọi thứ ra sử dụng 'printjson ({hm: 'vâng'})' hoặc 'db.foo.find() .forEach (printjson) 'nếu không có trong shell –

Trả lời

36

Tệp tập lệnh bên ngoài được thực thi bên ngoài ngữ cảnh trình bao.

Lệnh cơ sở dữ liệu db.foo.find() chỉ trả về con trỏ; nó không tự in bất cứ thứ gì. Khi lệnh được phát hành từ trình bao, trình bao sẽ lặp lại con trỏ và in kết quả. Khi lệnh được chạy từ một tập tin kịch bản bên ngoài, không có gì được in.

Lệnh print() sẽ in ra biểu diễn chuỗi của đối tượng. Trong trường hợp của bạn, đó là con trỏ:

> print(db.foo.find()) 
DBQuery: test.foo -> undefined 

Nếu bạn cần in kết quả của truy vấn, bạn sẽ phải lặp lại con trỏ trong file kịch bản của bạn và in mỗi kết quả, tương tự như những gì mà vỏ không:

function printResult (r) { 
    print(tojson(r)) 
} 

db.foo.find().forEach(printResult) 
13

Có chức năng tích hợp để in đối tượng json.

Chỉ cần thêm .forEach(printjson) vào cuối cuộc gọi hàm.

db.foo.find().forEach(printjson); 
Các vấn đề liên quan