【发布时间】:2015-08-28 22:37:58
【问题描述】:
嗯,我的 MongoDB 数据库中有以下集合:
{
"_id": 1,
"departamento_id": 1,
"nome": "PRODUTO01",
"valor": 10.511608123779297
}
所以,考虑到集合中的 所有 文档,我很傻,我做了以下操作以从 valor 字段中获取 平均 值:
db.produto.aggregate({
"$group": {
"_id": null,
"avgValor": {
"$avg": "$valor"
}
}
})
这有以下回报:
{
"_id": null,
"avgValor": 50.39681773098588
}
问题是,我需要在另一个查询中使用“avgValor”字段中的值。因此,我创建了一个变量并尝试将创建的组的结果存储在其中。问题是,当我在控制台中输入 first 时间的变量名时,它会产生奇迹,但是当我在 second 时间输入变量名时,MongoDB shell 什么也不返回.看看吧:
> db.produto.aggregate({"$group": {"_id": null, "avgValor": {"$avg": "$valor"}}})
{ "_id" : null, "avgValor" : 50.39681773098588 }
> var docMedia = db.produto.aggregate({"$group": {"_id": null, "avgValor": {"$avg": "$valor"}}})
> docMedia
{ "_id" : null, "avgValor" : 50.39681773098588 }
> docMedia
> docMedia
> docMedia
> docMedia
或者如果我在查询中使用变量,系统会返回错误。看看吧:
> var docMedia = db.produto.aggregate({"$group": {"_id": null, "avgValor": {"$avg": "$valor"}}})
> db.produto.find({valor: {$lte: docMedia.avgValor}})
Error: error: {
"$err" : "Can't canonicalize query: BadValue cannot compare to undefined",
"code" : 17287
}
这里会发生什么?
【问题讨论】:
标签: mongodb mongodb-query