13

コマンドラインでは、これは機能します。

$ mongo
> show dbs
mydatabase   1.0GB

ただし、これは行いません。

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

私はここでドキュメントを読み通しました:

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

しかし、どちらの方法も理解していません...

  1. 既存のデータベースに接続する(pymongoを使用)
  2. mongodb接続に存在するデータベースを照会します。

データベースにアクセスできないのはなぜですか?

4

5 に答える 5

15

既存のデータベースに接続する

import pymongo
from pymongo import MongoClient
connection = MongoClient()
db = connection.mydatabase

既存のデータベースを一覧表示する

import pymongo
from pymongo import MongoClient
connection = MongoClient()
# connection.database_names() # depreciated
connection.list_database_names()
于 2013-01-23T00:04:52.740 に答える
3

この質問は、ユーザーがローカルの MongoDBを持っていることを意味します。しかし、私はこの質問がリモートのMongoDBに接続しようとしていることに気づきました。チュートリアルは言及する価値があると思います(ホストとポートを指定する方法については、ここで他の回答は言及されていません)

上記のコードは、デフォルトのホストとポートに接続します。次のように、ホストとポートを明示的に指定することもできます。

client = MongoClient('localhost', 27017)

または、MongoDBURI形式を使用します。

client = MongoClient('mongodb://localhost:27017/')

于 2019-10-16T20:37:34.487 に答える
2

show dbsfind()はまったく異なるコマンドであるため、2つを比較することはできません。

connection.mydatabase.find()

find()データベースレベルでドキュメントを作成できないため、実際には何もしません。あなたはおそらく探しています:

cursor = connection.mydatabase.mycol.find()

私はPythonプログラマーではありませんが、そのようなものとデータを取得するためforeachの変数です。cursor

追加のメモとして、mycolドキュメントを含むコレクション名に置き換える必要があります。

データベースのリストのクエリに関しては、次のようなことができます。

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

ここに示すように:http://docs.mongodb.org/manual/reference/command/listDatabases/#listDatabases

ただし、私はPythonプログラマーではありませんが、これで始めることができます。

于 2013-01-22T22:16:11.193 に答える
2

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.

豊富な例はないようですが、PythonDriverAPIドキュメント内でバインディングはかなり完全になっているようです。

于 2013-01-22T23:59:18.283 に答える
1

database_names()は非推奨になりました。代わりにlist_database_names()を使用できます。

mongo_db_urlは、「mongodb:// localhost:27017/」のようになります。27017はデフォルトのポート番号です。適切に交換してください。

from pymongo import MongoClient
client = MongoClient(<mongo_db_url>)
#or client = MongoClient('localhost', 27017)
client.list_database_names()
于 2020-10-09T06:13:35.060 に答える