查询:
db.environments.aggregate(
[{$match:{customer:"CustomerName"}},
{$group:{_id:{environment: "$environment",
cpu_oversubscription:"$cpu_oversubscription",
memory_oversubscription:"$memory_oversubscription"}}} ])当我只运行查询时,只显示环境和CPU_oversubcription字段,则不会显示内存字段。
这是我得到的输出:
[{"_id":{"environment":"V&B","cpu_oversubscription":1}}当我运行db.environments.find()时,我看到所有的字段
[{"_id":{"environment":"V&B","cpu_oversubscription":1,"memory_oversubscription":1,"customer":"CustomerName"}}我的问题出什么问题了?
编辑:精确查询
Environment.aggregate([{$match:{customer:req.query.customer}},{$group:{_id:{environment: "$environment",cpu_oversubscription:"$cpu_oversubscription",memory_oversubscription:"$memory_oversubscription",}}} ])查询的准确结果
{ "_id" : { "environment" : "1", "cpu_oversubscription" : 1 } }
{ "_id" : { "environment" : "2", "cpu_oversubscription" : 4 } }
{ "_id" : { "environment" : "3", "cpu_oversubscription" : 4 } }
{ "_id" : { "environment" : "4", "cpu_oversubscription" : 4 } }
{ "_id" : { "environment" : "5", "cpu_oversubscription" : 4 } }
{ "_id" : { "environment" : "6", "cpu_oversubscription" : 1 } }
{ "_id" : { "environment" : "7", "cpu_oversubscription" : 1 } }
{ "_id" : { "environment" : "8", "cpu_oversubscription" : 1 } }
{ "_id" : { "environment" : "9", "cpu_oversubscription" : 4 } }
{ "_id" : { "environment" : "10", "cpu_oversubscription" : 4 } }db.environments.find()的精确结果(仅限于第一个结果)
{ "_id" : ObjectId("560a5139b56a71ea60890201"), "customer" : "CustomerName", "environment" : "1", "memory_oversubcription" : 1, "cpu_oversubscription" : 1 }发布于 2015-09-29 12:33:35
正如@Yogesh所说,您的数据中有一个输入字段。这解决了你的问题。
尽管如此,您不需要该查询的聚合框架:带有投影的查找将更有效:
db.environments.find({ "customer" : "CustomerName" },
{ _id : 0, "environment" : 1,
"memory_oversubscription" : 1,
"cpu_oversubscription" : 1
})结果将是:
{
"environment" : "1",
"memory_oversubscription" : 1,
"cpu_oversubscription" : 1
}如果出于某些原因,您确实希望在_id字段下获得结果,那么$project可能会更好:
db.environments.aggregate([
{$match:{"customer" : "CustomerName"}},
{$project:
{_id :
{"environment" : "$environment",
"memory_oversubscription" : "$memory_oversubscription",
"cpu_oversubscription" : "$cpu_oversubscription"}
}
}
]);结果:
{ "_id" : { "environment" : "1",
"memory_oversubscription" : 1,
"cpu_oversubscription" : 1 }
}对我来说没有意义,但也许对你来说是这样的:-)。
https://stackoverflow.com/questions/32841489
复制相似问题