sql >> データベース >  >> NoSQL >> MongoDB

MongoDB:2つのクエリで複数のコレクションをクエリしますか?

    MongoDBで「リレーショナル」クエリを作成しようとすると、フラストレーションがたまります。スキーマは、一部の情報(投稿の評価)を1つのコレクションに格納し、他の情報(作成者の年齢)を別のコレクションに格納しますが、すべてのMongoDBクエリは単一のコレクションで動作します。データを非正規化しない限り(やりたくないと言った)、これを機能させるには2パスの方法が必要になります。

    うまくいくはずのアプローチは、著者IDの配列を作成し、それを「$in」を使用して投稿コレクションのクエリで使用することです。 mongoシェルを使用したJavaScriptでは次のようになります。

    > var authorList = [];
    > var authorCursor = db.authors.find({age:{$gt:19,$lt:25}},{"_id":1});
    > while(authorCursor.hasNext()){authorList.push(authorCursor.next()["_id"])};
    > db.posts.find({"author.$id":{$in:authorList},rating:{$gt:6,$lt:9}});
    

    最初の行は空の配列を作成します。 2行目は、_idを選択するカーソルを作成します ターゲット年齢範囲のすべての著者のフィールド。 3行目は、カーソルを使用して作成者の配列_idにデータを入力します。 s。 4行目には、ターゲット条件に一致するすべての投稿が表示されます:author _id リストでは、指定した範囲で作成して評価します。



    1. mongo csharpを使用して挿入した後、最近挿入されたドキュメントの_idを取得するにはどうすればよいですか?

    2. redis.serviceの開始に失敗しました:ユニットredis-server.serviceがマスクされています

    3. Meteor:配列要素の2つの異なる投影を公開します

    4. 表現シリアル化オプションを使用すると、IdMemberMapがnullになります