2011-08-01 18 views
-1

クエリ:db.user.save({'user_id':1603、 'email': '[email protected]'、 'rel':[{'fid':1604、 's '0'、{'fid':1605、 's':1}、{'fid':1606、 's':2}]}) USERのコレクションを作成し、user_idを持つユーザー、電子メール、およびサブコレクションRELが含まれます。 サブコレクション内には、REL FID(フレンドID)とS(フレンドシップのステータス)のペアがあります(例:0 - フレンドリクエストの送信1 - フレンド2 - すなわち、サブコレクションRELユーザID1603は、友人との友好関係、友情の状況に関する情報である。サブコレクションで検索mongoDB

問題。 ID 1606を持つユーザーがいます。ユーザーID 1603を扱っているかどうかを調べる必要があります。

これを行うには、まずID 1603のユーザーを見つけ、取得してくださいREL db.user.findOne

RELのサブコレクションにある1606というFIDの値を検索し、IDが1603のユーザーを見つけました。 このような場合は、次のようになります(「 ' FIDが見つかった場合は、Sに戻ります。つまり、1606および1603のユーザーフレンドリーなステータスです。

ここで問題が発生します。 podskazheshが感謝の意を表します。

+0

少なくともあなたのコマンドを読むことができるようにいくつかのフォーマットを試してみてください!また、「podskazheshが感謝してくれたら」とはどういう意味ですか?私はそれが英語以外の言語であることを推測していますが、これは英語のサイトであり、まず翻訳を試みるべきです。 – danio

+0

私はこれと一緒にサブcolelction "REL"は表示されません、ドキュメント内のRELキーだけ? – danio

答えて

2

良いニュースがあるかもしれません。

db.user.findOne({'user_id': 1603}, {'rel.fid': 1606}) 

それがはたらく場合、その後、1606年には1603

サイドノートの友人である

MongoDBは "サブコレクション" の概念をサポートしていません。 A databaseは、documentsを含むcollectionsを含有する。そこには「サブコレクション」という概念はありません。

documentにはvaluearrayが含まれています。しかし、MongoDBにはどんなタイプの結合構文もありません。だから、それはちょうど "参照の配列"、それは実際には "サブコレクション"ではない参照整合性はここではないです。

+0

サブコレクションを作成するMongooseフレームワークのサポート。彼らのサイト(mongoosejs.com)に記載されています。しかし、そのページに示されているすべての情報は、配列要素の取得のみを示しています。しかし、彼らは、サブコレクション要素はそれがOWN ObjectIDであると言いました。 – egoss

+0

このような機能を持っている場合は、独自の機能とネーミングですが、MongoDBの一部ではありません。 Mongooseは結合を抽象化する方法を提供しますが、そのような結合を行うために複数のクエリを実行する必要があります。 –