3

私は自分のサイト用のモジュールを開発する予定です。www.tastekid.comに似ています

私のサイトにはユーザーと製品があります。

例えば; 最初のユーザーは2,4,56,57個の製品を気に入りました(数字は製品のIDです)。2番目(ユーザー)は1,4,56,57の製品が好きでした。

56と57の両方が好きな人を検索して、これらのユーザーに共通の製品IDを確認できるはずです。この場合は4、次に1または2です。

どうすればこれを設計できますか?参照または埋め込み?または私が知らない他のsolutoin...

私の問題が明らかになることを願っています。ありがとう。

4

1 に答える 1

3

スキーマ設計に関するMongoドキュメントは、良い出発点を提供するはずです 。http ://www.mongodb.org/display/DOCS/Schema+Design 埋め込みとリンクに関するセクションと、実装を含む例があります。両方の。

埋め込みとリンクのテーマでStackOverflowについて尋ねられた別の質問があります。これには、非常に詳細な回答が含まれています 。MongoDBの関係:埋め込みまたは参照?

「Mongoでのデータの更新」というタイトルのMongoドキュメントには、ドキュメントの埋め込みと参照ドキュメントに関するセクションも含まれています: http ://www.mongodb.org/display/DOCS/Updating+Data+in+Mongo

上記のリンクは、ドキュメントの埋め込みと参照の違いについて非常によく理解し、スキーマ設計のためのいくつかの良いアイデアを提供するはずです。

特定の例では、同じ製品が好きなユーザーを検索しているように見えます。考えられる解決策の1つは、各ユーザーが好む製品IDの配列を含めることです。

> db.users.find()
db.users.save({ "_id" : 1, "name" : "Joe", "LikesProducts":[2,4,56,57] });
db.users.save({ "_id" : 2, "name" : "Jane", "LikesProducts":[1,4,56,57] });

製品56と57の両方が好きなユーザーを見つけるには、次のクエリを実行できます。

> db.users.find({LikesProducts:{$all:[56,57]}})
{ "_id" : 1, "name" : "Joe", "LikesProducts" : [ 2, 4, 56, 57 ] }
{ "_id" : 2, "name" : "Jane", "LikesProducts" : [ 1, 4, 56, 57 ] }
> 

$ all演算子の詳細については、「高度なクエリ」のドキュメントをご覧ください: http ://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24all

次に、アプリケーションは、両方のユーザーの「LikesProducts」配列に表示される他の製品(存在する場合)を判別できます。

うまくいけば、これはあなたのアプリケーションのために考慮すべきいくつかのアイデアをあなたに与えるでしょう。他にご不明な点がございましたら、コミュニティがお手伝いします。

于 2012-04-10T16:51:54.023 に答える