私は2つのコレクションを持っています投稿と投稿者投稿文書には、投稿データの横に、DBrefリンク IDが記載されています。_idです。私のコレクションは次のようになります。MongoDB:2つのクエリで複数のコレクションをクエリしていますか?
投稿
"_id" : ObjectId("4fa12443d3269e98070013b4"),
"author" : {
"$ref" : "authors",
"$id" : ObjectId("4fa1242bd3269e9807000023")
},
"post" : " mi eleifend egestas. Sed pharetra, felis eget varius ultrices, mauris ipsum porta elit, a feugiat tellus lorem eu metus. In lorem.",
"post_title" : "Volutpat. Nulla facilisis. Suspendisse commodo tincidunt nibh. Phasellus nulla. Integer",
"date" : 1293803276,
"rating" : 8,
"comments" : [{
"name" : "Doris Turner",
"email" : "[email protected]",
"upVotes" : 81,
"downVotes" : 93,
"comment_date" : 1111395830,
"comment" : "consectetuer ipsum nunc id enim. Curabitur massa. Vestibulum accumsan neque et nunc. Quisque ornare tortor at"
}, {
"name" : "Brenda Tyler",
"upVotes" : 1,
"downVotes" : 73,
"comment_date" : 940325674,
"comment" : "cursus purus. Nullam scelerisque neque sed sem egestas blandit. Nam Nulla aliquet. Proin velit. Sed malesuada augue ut lacus. Nulla tincidunt, neque vitae semper egestas, urna justo faucibus lectus, a sollicitudin orci sem eget massa."}],
"tags" : ["tag1", "tag3"]
}
そして、私の作家のコレクションは次のようになります。
著者
{
"_id" : ObjectId("4fa1242bd3269e9807000016"),
"name" : "Kristina Chung ",
"email" : "[email protected]\r\n.dk",
"age" : 60,
"city" : "Copenhagen"
}
私は「作成しようとしていますリレーショナル "クエリを検索する: 評価が6以上の投稿9歳未満、投稿者の年齢が19歳以上25歳未満の場合
私はこれを集計しようとしていますが、適切なデータを得ることはできません。
最初のクエリは、私の記事の収集にあり、次のようになります。
$query = array('rating' => array('$gte' => 6, '$lt' => 9), 'comments.upVotes' => array('$gt' => 2, '$lt' => 20));
私は作者のコレクションへの参照である著者$ idフィールドを選択します。
私はその後のようなアレイ内のすべての$ idを置く:私は
while ($cursor->hasNext()): $document = $cursor->getNext();
$authorID[] = $document['_id'];
endwhile;
をし、私は
$query2 = array('age' => array('$gte' => 19, '$lt' =>100), '_id' => array('$in' => $authorID));
$cursor = q('author')->find($query2);
作者のコレクションにこのクエリで正しい番号を検索してみてくださいこのコードで総数を取得してみてください: $ count = $ cursor-> count();しかし、どんなクエリを実行しようとしても、私は常に結果を得る。
私は間違っていますが、この種のクエリを作成することは可能ですか、データベースレベルではなくアプリケーションレベルで行う必要がありますか?
私は埋め込みドキュメントをよく知っていますが、これらの2つのコレクションを分離して埋め込みません。
誰もがこれを手伝ってくれることを願っています。
誠実
- MongoDBの中で「『リレーショナル』クエリを作成」しようとMestika