2016-05-25 5 views
0

MongoDB 3.2バージョンを使用しています。 monger という名前のClojureラッパーを使用してdbとそのコレクションを作成しましたが、mongoシェルに接続してコレクションが作成されているかどうかを確認することはできません。MongoDBはコレクション情報を表示していませんが、私は確信していますが

は、ここでは、コードです:

Primary> use db_name 

PRIMARY> db.version() 
3.2.3 

PRIMARY> db.stats() 
{ 
     "db" : "db_name", 
     "collections" : 4, 
     "objects" : 0, 
     "avgObjSize" : 0, 
     "dataSize" : 0, 
     "storageSize" : 16384, 
     "numExtents" : 0, 
     "indexes" : 9, 
     "indexSize" : 36864, 
     "ok" : 1 
} 

PRIMARY> show collections 

PRIMARY> db.coll1.getIndexes() 
[ ] 

PRIMARY> db.getCollectionInfos() 
Tue May 24 16:29:44 TypeError: db.getCollectionInfos is not a function (shell):1 

PRIMARY> 

しかし、私がチェックしたときにコレクションがClojureのを介して作成されている場合、私は情報を見ることができます。

user=> (monger.db/get-collection-names mongo-db*) 
#{"coll1" "coll2" "coll3" "coll4"} 

何が起こっているのですか?

答えて

0

問題が見つかりました。したがって、mongoシェルと実行中のmongoインスタンスが2つの異なるバージョンの場合、db.getCollectionNames()db.collection.getIndexes()は出力を返しません。

これは、リモートmongoインスタンスに接続していて、接続先のインスタンスがsay 2.xシェルバージョンを実行している場合(シェルを起動したときに表示されます)、実行中のmongoが3の場合に発生します。 xバージョン。 the documentationによると

:WiredTigerストレージエンジンを使用してのMongoDB 3.0の展開については

、あなたが以前の3.0互換性のあるバージョン3.0の前にmongoシェルのバージョンまたはドライバのバージョンからdb.getCollectionNames()db.collection.getIndexes()を実行する場合、db.getCollectionNames()およびdb.collection.getIndexes()は、既存のコレクションおよびインデックスが存在する場合でも、データを返しません。詳細については、「WiredTigerとドライバのバージョンの互換性」を参照してください。

これを理解しようとするとほぼ1時間かかりましたが、これは他の人に役立つと思いました。

関連する問題