1

User2 がこれらのデータ オブジェクトを持っているとします。それらはオブジェクトの配列として User2.objects に格納されます。

User2:{objects:[{object1},{object2},{object3}]} 

User2 以外の誰かがこのデータを照会する必要がある場合、User1 がそれ​​らに関連するオブジェクトのいずれかを必要とするように。次に、MongoDB db の独自のコレクションに分割する必要があります。

User1 がその一部であるようなすべてのオブジェクトを見つけたいとします。データを作成したすべての User2 への参照が必要であり、各ユーザーのすべてのオブジェクトを調べて、必要なものを返します。

これらのオブジェクトを独自のコレクションに分割する必要がありますか? 次に、ユーザー ID のインデックスを作成するだけで、各ユーザーは自分の ID を 1 回クエリするだけで済みます。

この Q が混乱している場合は申し訳ありませんが、私は少し迷っています。

4

1 に答える 1

5

Mongo Document 構造と MongoDB での認証の使用との間に混乱があるようです。

Mongo データベースのユーザー認証を設定する方法に関するドキュメントは、 http ://www.mongodb.org/display/DOCS/Security+and+Authentication です。

User2 が User1 によって作成されたコレクションに対してクエリを実行する必要がある場合、User2 はそのコレクションが存在するデータベースのアカウントを持っている必要があり、適切に認証されている必要があります。

提供されているサンプル ドキュメントも少しわかりにくいものです。すべてのドキュメントで同じキー名を使用することをお勧めします。例えば:

{userName:"user1", name:"Marc"},
{userName:"user2", name:"Jeff"},
{userName:"user3", name:"Steve"}

よりも好ましい

{user1:"Marc"},
{user2:"Jeff"},
{user3:"Steve"}

2 番目の例では、ユーザーの名前を見つけるために、ユーザー名 (user1、user2 など) を知る必要があります。MongoDB はクエリでワイルドカードをサポートしていません。

次のドキュメント構造が望ましいでしょう。

{
user: "User2", 
objects:[object1,object2,object3]
},
{
user: "User1", 
objects:[object1,object2,object3]
}

user1 によって作成されたすべてのオブジェクトは、次のクエリで取得できます。

> db.<your collection name>.find({user: "User1"}, {objects:1})

MongoDB ドキュメント構造の詳細については、以下を読むことをお勧めします。

http://www.mongodb.org/display/DOCS/Schema+Design - サンプル ドキュメント、ベスト プラクティス、インデックス作成の紹介など、MongoDB にデータを格納する方法の優れた紹介です。

コレクションのスキーマを決定し、ユーザーを作成し、アクセス許可を設定するという点で、上記が正しい軌道に乗ることを願っています。認証は MongoDB のより高度な機能の 1 つであるため、認証について心配する前に、まず効率的なスキーマを構築し、データを正しく整理することに焦点を当てます。

これらのトピックやその他の MongoDB 関連の質問がある場合は、コミュニティが役に立ちます。幸運を!

于 2011-11-21T20:08:45.913 に答える