2011-01-12 5 views
8

MongoDBが展示している奇妙な行為を発見しました。"システム" MongoDBのコレクション名で

明らかに、文字列 "system"を持つコレクション名。どこにいても正しく機能しません。

さらに悪いことに、それは間違っていることを教えてくれません。

これは本当に好奇心の問題ですが、これがどうして起こるのか誰にも分かりません。それはどこかに書かれていますか?

「システム」コレクションは内部的に(索引のように)物事を格納するためのものであり、あなたがそれらを使いこなそうとはしませんが、これは私にとって正しい動作のようには見えません。

答えて

12

あなたは正しい「システム。*」です各DBでのMongoDBで使用される予約コレクションの名前空間である。

これは、インデックスとユーザーを格納するために使用される、など

SQL Serverは、あまりにも多く、このようなテーブルを持っていますどちらも使用しないよう警告しているとは信じられません:)

しかし、あなたは常にこのような機能の要求に入れることができます:http://jira.mongodb.org/

あなたが実行することにより、それらを見ることができます...

> show collections

、あなたが

...のようなものが表示されます

system.indexes

​​

MongoDBのドキュメントから

> db.system.indexes.find()

だから、あなたは、たとえば、あなたのインデックスを見ることができます。

.system * MongoDBの中名前空間は特別で、 データベースが含まれていますシステムインフォメーション。システム コレクションが含まれます:

  • system.namespacesリストのすべての名前空間を。
  • system.indexesすべてのインデックスを一覧表示します。
  • 追加のnamespace/indexメタデータがdatabase.ns ファイルに存在し、不透明です。
  • system.profileは、データベースプロファイリング情報を格納します。
  • system.usersは、データベースにアクセスできるユーザーをリストします。
  • local.sourcesは、レプリカのスレーブ設定データと状態を格納します。
  • 格納されたオブジェクトの構造に関する情報は、オブジェクト自体の に格納されます。 BSONを参照してください。

コレクションのオブジェクトの操作には、 コレクションにいくつかの制限があります。 system.indexesを挿入すると、インデックスが追加されますが、 がなければ、そのテーブルは変更できません( 特別なドロップインデックスコマンドによって が更新されます)。 system.usersは変更可能です。 system.profileは削除可能です。

http://docs.mongodb.org/manual/reference/system-collections/

+0

私はuser.primary持っているとコレクションは、私は一度に両方のコレクションから名前でユーザーを選択することができるという点でuser.secondaryかのように、すべてのコレクションからレコードを取得することが可能ですか? – jackyesind

関連する問題