MongoDB 文档设置和聚合

巴列克山德

我对 MongoDB 还很陌生,在准备要使用的数据时,我进入了聚合……这个数据库有多么强大的小东西!我非常兴奋并开始测试一些东西:)

我正在为 companyId 和 employeeId 保存时间条目......可以有很多条目......那些通常按日期排序,但一个日期可以有多个条目(同一天多次注册)

我正在尝试提出一个好的模式,这样我就可以轻松地根据我的需要获取我的数据,作为一个新手,我宁愿寻求指导并检查我是否走在正确的道路上

我的输出应该是

[{
    "company": "474A5D39-C87F-440C-BE99-D441371BF88C",
    "employee": "BA75621E-5D46-4487-8C9F-C0CE0B2A7DE2",
    "name": "Bruno Alexandre":
    "registrations": [{
        "id": 1448364,
        "spanned": false,
        "spannedDay": 0,
        "date": "2019-01-17",
        "timeStart": "09:00:00",
        "timeEnd": "12:00:00",
        "amount": {
            "days": 0.4,
            "hours": 2,
            "km": null,
            "unit": "days and hours",
            "normHours": 5
        },
        "dateDetails": {
            "week": 3,
            "weekDay": 4,
            "weekDayEnglish": "Thursday",
            "holiday": false
        },
        "jobCode": {
            "id": null,
            "isPayroll": true,
            "isFlex": false
        },
        "payroll": {
            "guid": null
        },
        "type": "Sick",
        "subType": "Sick",
        "status": "APP",
        "reason": "IS",
        "group": "LeaveAndAbsence",
        "note": null,
        "createdTimeStamp": "2019-01-17T15:53:55.423Z"
  }, /* more date entries */ ]
}, /* other employees */ ]

将数据添加到集合中的最佳方法是什么?

它是更有效的,如果我创建一个文档每家公司/员工,并补充说,文件中的所有注册项(随着时间的推移它可以得到非常大的)...或者是它最好有一个文件每家公司/员工/日期和附加而是该文档中的所有日常事件?

关于聚合,我对这一切还是陌生的,但我想我可以简单地打电话

RegistrationsModel.aggregate([
    {
        $match: {
            date: { $gte: new Date('2019-01-01'), $lte: new Date('2019-01-31') },
            company: '474A5D39-C87F-440C-BE99-D441371BF88C'
        }
    },
    {
        $group: {
            _id: '$employee',
            name: { '$first': '$name' }
        }
    },
    {
        // ... get all registrations as an Array ...
    },
    {
        $sort: {
            'registrations.date': -1
        }
    }
]);

PS 我参加了聚合课程以开始熟悉所有内容

大卫·法布雷盖特

如果我为每个公司/员工创建一个文档并在该文档中添加所有注册条目(随着时间的推移它可能会变得非常大),是否会更有效......或者每个公司/员工/日期有一个文档并添加更好而是该文档中的所有日常事件?

根据我对面向文档的数据库的理解,我想说的目的是将您需要的所有数据在特定上下文中分组到一个文档中。因此,您需要做的是确定您将需要哪些数据(接近您想要实现的功能)并根据该数据构建您的数据结构。请务必确定未来的功能,因为您为它准备的数据结构越多,根据您的需要扩展数据库的难度就越小。

您的聚合查询看起来不错!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

mongodb $聚合空数组和多个文档

来自分类Dev

MongoDB / Mongoose-包含geoNear和子文档的聚合

来自分类Dev

使用MongoDB聚合管道展开和汇总子子文档

来自分类Dev

Mongodb和聚合框架。数组的总和与文档的总和

来自分类Dev

MongoDB组聚合多个元素和子文档

来自分类Dev

Mongodb和聚合框架。数组的总和与文档的总和

来自分类Dev

mongodb - 聚合和展开外国 ref 文档

来自分类Dev

MongoDB聚合,包括丢失的文档

来自分类Dev

MongoDB聚合:创建子文档

来自分类Dev

MongoDB子文档键聚合

来自分类Dev

在MongoDB中聚合异构文档

来自分类Dev

mongodb中的嵌套文档聚合

来自分类Dev

Elixir和MongoDB聚合

来自分类Dev

Mongodb聚合从文档内部检索文档

来自分类Dev

MongoDB在聚合查询中获取第一个和最后一个文档

来自分类Dev

MongoDB嵌入式文档:大小限制和聚合性能问题

来自分类Dev

基于匹配查询和优先级值的MongoDB聚合查询返回文档

来自分类Dev

通过mongodb中的聚合和$ facet在每个文档中添加一个新字段

来自分类Dev

MongoDb:聚合$ lookup并过滤外部文档

来自分类Dev

使用MongoDB聚合管道计数文档

来自分类Dev

mongodb聚合框架按嵌套文档匹配

来自分类Dev

mongodb聚合获取匹配文档的总数

来自分类Dev

MongoDb管道聚合$ unwind子子文档

来自分类Dev

MongoDb管道聚合排序子子文档

来自分类Dev

MongoDb使用$ add聚合嵌套文档

来自分类Dev

每个文档级别的聚合mongodb

来自分类Dev

mongodb-嵌套文档的子聚合

来自分类Dev

MongoDB聚合以实际文档替换ObjectId数组

来自分类Dev

mongodb聚合框架按嵌套文档匹配