如何将 mongodb 中的文档和项目 _id 分组为不同的名称?
How to group documents in mongodb and project _id as different name?
db.getCollection("analytics").aggregate(
[
{
"$match" : {
"uID" : {
"$in" : [
"202003008",
"20200306"
]
},
"midNightTimeStamp" : {
"$gte" : ISODate("2022-03-26T18:30:00.000+0000")
}
}
},
{
"$group" : {
"_id" : "$midNightTimeStamp",
"energyConsumed" : {
"$sum" : "$energyConsumed"
},
}
},
{
"$project" : {
"midNightTimeStamp" : 1.0, // I also want to project with a different name.
"energyConsumed" : 1.0
}
}
],
{
"allowDiskUse" : false
}
);
如上面的查询所示,我想将一个字段投影为 midNightTimeStamp,它与 _id(累加器对象)相同,这样当我收到文件时,我会得到它
{
midNightTimeStamp: ISODate("2022-03-26T18:30:00.000+0000"),
energyConsumed: 100
}
如果我没理解错你只需要这样做:
{
"$project" : {
"_id": 0, // Not output the "real" _id
"midNightTimeStamp" : "$_id", // output _id value with name "midNightTimeStamp"
"energyConsumed" : 1.0
}
}
例子here
在项目阶段添加一个字段即可实现
"$project" : {
"_id" : 0.0,
"midNightTimeStamp" : "$_id", // This will be added.
"energyConsumed" : 1.0
}
这将导致以下查询:
db.getCollection("analytics").aggregate(
[
{
"$match" : {
"uID" : {
"$in" : [
"202003008",
"20200306"
]
},
"midNightTimeStamp" : {
"$gte" : ISODate("2022-03-26T18:30:00.000+0000")
}
}
},
{
"$group" : {
"_id" : "$midNightTimeStamp",
"energyConsumed" : {
"$sum" : "$energyConsumed"
}
}
},
{
"$project" : {
"_id" : 0.0,
"midNightTimeStamp" : "$_id",
"energyConsumed" : 1.0
}
}
],
{
"allowDiskUse" : false
}
);
db.getCollection("analytics").aggregate(
[
{
"$match" : {
"uID" : {
"$in" : [
"202003008",
"20200306"
]
},
"midNightTimeStamp" : {
"$gte" : ISODate("2022-03-26T18:30:00.000+0000")
}
}
},
{
"$group" : {
"_id" : "$midNightTimeStamp",
"energyConsumed" : {
"$sum" : "$energyConsumed"
},
}
},
{
"$project" : {
"midNightTimeStamp" : 1.0, // I also want to project with a different name.
"energyConsumed" : 1.0
}
}
],
{
"allowDiskUse" : false
}
);
如上面的查询所示,我想将一个字段投影为 midNightTimeStamp,它与 _id(累加器对象)相同,这样当我收到文件时,我会得到它
{
midNightTimeStamp: ISODate("2022-03-26T18:30:00.000+0000"),
energyConsumed: 100
}
如果我没理解错你只需要这样做:
{
"$project" : {
"_id": 0, // Not output the "real" _id
"midNightTimeStamp" : "$_id", // output _id value with name "midNightTimeStamp"
"energyConsumed" : 1.0
}
}
例子here
在项目阶段添加一个字段即可实现
"$project" : {
"_id" : 0.0,
"midNightTimeStamp" : "$_id", // This will be added.
"energyConsumed" : 1.0
}
这将导致以下查询:
db.getCollection("analytics").aggregate(
[
{
"$match" : {
"uID" : {
"$in" : [
"202003008",
"20200306"
]
},
"midNightTimeStamp" : {
"$gte" : ISODate("2022-03-26T18:30:00.000+0000")
}
}
},
{
"$group" : {
"_id" : "$midNightTimeStamp",
"energyConsumed" : {
"$sum" : "$energyConsumed"
}
}
},
{
"$project" : {
"_id" : 0.0,
"midNightTimeStamp" : "$_id",
"energyConsumed" : 1.0
}
}
],
{
"allowDiskUse" : false
}
);