MongoDB 查询将一个已计算的表达式推送到 $group 中?


要将一个已计算的表达式推送到 $group 中,请使用 aggregate。让我们首先创建一个有文档的集合 -

> db.demo24.insertOne({"Id":100,"Status":true});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e14c58722d07d3b95082e72")
}
> db.demo24.insertOne({"Id":100,"Status":true});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e14c58a22d07d3b95082e73")
}
> db.demo24.insertOne({"Id":100,"Status":false});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e14c58f22d07d3b95082e74")
}
> db.demo24.insertOne({"Id":100,"Status":true});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e14c59122d07d3b95082e75")
}
> db.demo24.insertOne({"Id":100,"Status":false});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e14c59222d07d3b95082e76")
}

借助 find() 方法从集合中显示所有文档 -

> db.demo24.find();

这将产生以下输出 -

{ "_id" : ObjectId("5e14c58722d07d3b95082e72"), "Id" : 100, "Status" : true }
{ "_id" : ObjectId("5e14c58a22d07d3b95082e73"), "Id" : 100, "Status" : true }
{ "_id" : ObjectId("5e14c58f22d07d3b95082e74"), "Id" : 100, "Status" : false }
{ "_id" : ObjectId("5e14c59122d07d3b95082e75"), "Id" : 100, "Status" : true }
{ "_id" : ObjectId("5e14c59222d07d3b95082e76"), "Id" : 100, "Status" : false }

这是将一个已计算的表达式推送到 $group 中(使用 $push)的查询 -

> db.demo24.aggregate({$group: {_id:'$Id', AllValues: {$push: {$cond: [{$eq: ['$Status', true]},'Active','InActive']}}}})

这将产生以下输出 -

{ "_id" : 100, "AllValues" : [ "Active", "Active", "InActive", "Active", "InActive" ] }

更新于:02-04-2020

204 次浏览

启动你的 职业生涯

完成课程即可获得认证

开始
广告
© . All rights reserved.