当前位置: 首页 > 编程笔记 >

MongoDB聚合和投影

卫沈义
2023-03-14
本文向大家介绍MongoDB聚合和投影,包括了MongoDB聚合和投影的使用技巧和注意事项,需要的朋友参考一下


为此,请使用$project和aggregate()。聚合中的$project将带有请求字段的文档传递到管道的下一个阶段。

让我们创建一个包含文档的集合-

> db.demo762.insertOne({
...    "_id" : {
...       "userId":101,
...       "userName":"Chris"
...    },
..   . "countryName" : "US",
...
...    "details" : [
...       {
...          "Name" : "Robert",
...          "DueDate" : "2020-04-10"
...
...       },
...
...       {
...          "Name" : "Robert",
...          "DueDate" : "2020-04-09"
...       },
...       {
...          "Name" : "Robert",
...          "DueDate" : "2020-03-06"
...       }
...    ]
... }
... );
{
   "acknowledged" : true,
   "insertedId" : {
      "userId" : 101,
      "userName" : "Chris"
   }
}

在find()方法的帮助下显示集合中的所有文档-

> db.demo762.find();

这将产生以下输出-

{ "_id" : { "userId" : 101, "userName" : "Chris" }, "countryName" : "US", "details" : [ { "Name" : "Robert", "DueDate" : "2020-04-10" }, { "Name" : "Robert", "DueDate" : "2020-04-09" }, { "Name" : "Robert", "DueDate" : "2020-03-06" } ] }

以下是对MongoDB聚合和投影的查询-

> db.demo762.aggregate([
...    { "$match": {
...       "_id": { "$eq": { userId:101,userName:"Chris" }}
...    }},
...    { "$unwind": "$details" },
...    { "$sort": { "details.DueDate": 1 }},
...    { "$group": {
...       "_id": "$_id",
...       "details": { "$push": "$details" },
...       "countryName": { "$first": "$countryName" }
...    }},
... { "$project": { "details": { "$slice": ["$details", 2] } ,"countryName": 1 }}
... ]).pretty();

这将产生以下输出-

{
   "_id" : {
      "userId" : 101,
      "userName" : "Chris"
   },
   "countryName" : "US",
   "details" : [
      {
         "Name" : "Robert",
         "DueDate" : "2020-03-06"
      },
      {
         "Name" : "Robert",
         "DueDate" : "2020-04-09"
      }
   ]
}


 类似资料:
  • 并给我带来这些结果: {“_id”:{“name”:“city1”},“count”:212} {“_id”:{“name”:“city2”},“count”:1200} https://hexdocs.pm/mongodb/readme.html#贡献 提前谢了。

  • 我使用Nodejs和MongoDB与expressjs和mongoose库,创建一个具有用户、文章和评论模式的博客API。下面是我使用的模式。

  • org.hibernate.criterion.Projections 是 Projection 的实例工厂。我们通过调用 setProjection() 应用投影到一个查询。 List results = session.createCriteria(Cat.class) .setProjection( Projections.rowCount() ) .add( Restric

  • 我已经为此挣扎了好几天了。我们刚刚开始与mongoDB合作,因此我对它的了解非常有限。 总之,我想做的是:我们有一个叫做Loan的课程,就像这样: 由于查询此集合时必须执行各种操作,因此我们在LoanRepository中创建了一个聚合(该聚合适用于我们在Mongo Compass中创建的,然后将其导出到我们的代码中): 这个想法是,在所有上述操作之后,我们只需要从整个Loans表中返回一些字段(

  • 主要内容:aggregate() 方法,管道MongoDB 中的聚合操作用来处理数据并返回计算结果,聚合操作可以将多个文档中的值组合在一起,并可对数据执行各种操作,以返回单个结果,有点类似于 SQL 语句中的 count(*)、group by 等。 aggregate() 方法 您可以使用 MongoDB 中的 aggregate() 方法来执行聚合操作,其语法格式如下: db.collection_name.aggregate(aggr