3

2 つのコレクションがあるとします。

> db.fellas.findOne()
{
    "_id" : 123
    "women" : [
        1,
        12,
        34
    ]
}

> db.women.findOne()
{ "_id" : 12, "busty" : 1 }

一部の女性は特定の仲間に属していますが、一部の女性はそうではありません。上記の場合、女性はフェラに属しています。

どのフェラにも属さないすべての女性を見つけるにはどうすればよいですか? $unwind を使用してそれを実行しようとしましたが、うまくいきませんでした。つまり、私はさらに何をすべきかわからないということです。

あなたのアイデアは?

4

3 に答える 3

2

次のような関数を使用できます。

db.women.find().forEach(function(w){
  if( !db.fellas.findOne({ women:{$in:[w._id]} }) )
    printjson(w); 
)}

別の方法、つまり mapreduce があります。

于 2012-12-17T09:24:23.210 に答える
0

2 つの異なるコレクションが含まれているため、集約フレームワークでは実行できません。各女性IDを取得し、女性のコレクションの女性配列で見つける必要があります.

于 2012-12-17T08:57:07.657 に答える
0

集約フレームワークは結合をサポートしていないようです。これは、Hadoop、Apache Pig、および MongoDb+Hadoop コネクタを使用して実行できます (私は実行しました)。Apache Pig は、複数のデータ ソースを非常に簡単に結合できる高水準言語を提供します。これは、Hadoop クラスターで実行される map-reduce ジョブに変換されます。

于 2013-09-09T12:53:34.937 に答える