2013-01-22 54 views
6

Trên dòng lệnh, công trình này:Làm cách nào để sử dụng pymongo để kết nối với bộ sưu tập tài liệu/db hiện có?

$ mongo 
> show dbs 
mydatabase 1.0GB 

Tuy nhiên, đây không:

$ python  
>>> import pymongo 
>>> connection = pymongo.MongoClient() 
>>> connection.mydatabase.find() 

Tôi đọc qua tài liệu ở đây:

http://api.mongodb.org/python/current/tutorial.html

Nhưng không hiểu tại sao hoặc là ...

  1. kết nối với cơ sở dữ liệu hiện có (sử dụng pymongo)
  2. truy vấn cơ sở dữ liệu nào tồn tại trong kết nối mongodb.

Tại sao tôi không thể truy cập cơ sở dữ liệu của mình?

+1

Huh, có người thời gian gần đây tình cờ gặp Q này, tôi thậm chí không nhớ yêu cầu. Đây là câu hỏi đầu tiên của tôi. Bây giờ tôi làm chính xác điều này một tỷ lần mỗi ngày mà không hề nhận ra một lần tôi không hiểu nó ... – Mittenchops

Trả lời

1

show dbsfind() là các lệnh hoàn toàn khác nhau vì vậy bạn không thể so sánh hai lệnh này.

connection.mydatabase.find() 

Thực sự sẽ không làm gì vì bạn không thể find() tài liệu ở cấp cơ sở dữ liệu. Bạn có thể tìm cho:

cursor = connection.mydatabase.mycol.find() 

Tôi không lập trình Python nhưng một cái gì đó như thế và foreach các cursor var để có được dữ liệu của bạn.

Là ghi chú bổ sung, bạn sẽ muốn thay thế mycol bằng tên bộ sưu tập chứa tài liệu của bạn.

Đối với truy vấn cho một danh sách các cơ sở dữ liệu bạn có thể làm một cái gì đó như:

databases = connection.mydatabase.command({'listDatabases': 1}); 

Như đã trình bày ở đây: http://docs.mongodb.org/manual/reference/command/listDatabases/#listDatabases

Tuy nhiên một lần nữa tôi không lập trình Python nhưng điều này sẽ giúp bạn bắt đầu.

2

Trên dòng lệnh python:

import pymongo 
from pymongo import MongoClient 
connection = MongoClient() ## connects by default to db at localhost:27017 
connection.database_names() ## python binding equivalent to show dbs. 

Mặc dù có vẻ không phải là một sự giàu có của các ví dụ, có vẻ như các ràng buộc là khá hoàn chỉnh trong Python Driver API Documentation.

Các vấn đề liên quan