我有以下收集CIDADE我的MongoDB数据库:如何在数组中集合文档而不是在MongoDB的集合中?
{
"_id" : 0,
"nome" : "CIDADE0",
"qtdhab" : 1231043
}
所以,这里就是我想要做的。我试图做到这一点的SQL查询的MongoDB中的等价物:
SELECT MAX(QTDHAB) FROM CIDADE WHERE QTDHAB <= (SELECT AVG(QTDHAB) FROM CIDADE);
基本上,我想从集合CIDADE随后被条件qtdhab领域的最大值低于相同领域的平均值qtdhab对同一集合cidade。所以,我已经映射到这3个查询,像这样:
var resultado = db.cidade.aggregate({"$group": {"_id": null, "avgHab": {"$avg": "$qtdhab"}}}).toArray()
var resultado2 = db.cidade.find({qtdhab: {$lte: resultado[0].avgHab}}).toArray()
resultado2.aggregate({"$group": {"_id": null, "maxHab": {"$max": "$qtdhab"}}})
的问题是,因为我发现了艰辛的道路,有一个数组,例如resultado2没有.aggregate方法,所以最后的查询返回一个错误。是否有任何其他方式让我获得最大值的字段qtdhab在这2个查询生成的这组文件中?
我们无法看到您的文档,但你要基本上做这样的事情,从每个阵列获取的第一批成果,然后制定出一些值从那。但首先你需要解构阵列。所以看['$ unwind'](http://docs.mongodb.org/manual/reference/operator/aggregation/unwind/),或者至少在这里发布一些人们可以使用的东西。 –
对不起,我已更新文档结构的帖子。 – Don
该文档结构与数组有什么关系?我看到那里没有阵列。或者是文档中的数组元素?我认为包含数组的实际文档是这里不可缺少的部分。 –