假设我有2个集合:
> db.fellas.findOne()
{
"_id" : 123
"women" : [
1,
12,
34
]
}
> db.women.findOne()
{ "_id" : 12, "busty" : 1 }
有些女性属于某个家伙,但其中一些不属于某个家族。在上面的案例中,该女性确实属于该家伙。
如何找到所有不属于任何家伙的女性?我尝试使用$ unwind做到这一点,但没有运气。我的意思是,我不知道自己应该做些什么。
你的想法?
答案 0 :(得分:2)
您可以使用以下功能:
db.women.find().forEach(function(w){
if( !db.fellas.findOne({ women:{$in:[w._id]} }) )
printjson(w);
)}
还有另一种方法,即mapreduce。
答案 1 :(得分:0)
您不能使用聚合框架,因为它涉及两个不同的集合。你必须把每个女性的身份都发现在女性系列中。
答案 2 :(得分:0)
听起来聚合框架不支持连接。这可以通过Hadoop,Apache Pig和MongoDb + Hadoop连接器完成(我已经完成)。 Apache Pig提供了一种高级语言,可以很容易地连接多个数据源。它转换为在Hadoop集群中运行的map-reduce作业。