标签: aggregation

关联、组合和聚合 - 用 java 实现

我有点困惑Association, Aggregation and Composition。尽管大量的网站和论坛讨论了这个主题,但在阅读其中一些内容后我变得更加困惑。

我想知道以下是否正确:

1.) 聚合——如果整体被破坏,聚合就会存在。例如, anEngine可以有或没有 a 存在Car

2.) 组合 - 如果对象被破坏,组合将不存在。例如,Room没有 a 就不可能存在House

3.) 关联 - 我不确定在什么情况下我们应该使用它。有人可以对此发表评论吗?

当涉及到为聚合、组合和关联编写 Java 代码时

4.)聚合

Class Car {

    private Engine engine;

    public void setEngine(Engine engine){
     this.engine=engine;
    }  

    public Engine getEngine(){
     return engine;
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为如果是聚合关联,那么就应该accessors and mutators定义。它是否正确 ?

根据我对聚合的定义,我提到如果Car对象被销毁,则Engine可以访问。但是,我在上面的代码中没有看到这种情况发生。如果 Car 对象被销毁,将无法像car.getEngine(). 那么这是怎么发生的呢?

作品

Public House {
   private Room room;
   Public House (){ …
Run Code Online (Sandbox Code Playgroud)

java uml associations composition aggregation

5
推荐指数
1
解决办法
1万
查看次数

服务编排、服务聚合和服务增强之间的区别

服务编排和聚合有什么区别?在 SO 的类似帖子中,有人提到这两个术语之间只有一线之隔。能否获得有关这条细线的更多详细信息?此外,什么是服务增强以及它如何与另外两个概念相关。

soa orchestration aggregation

5
推荐指数
1
解决办法
3616
查看次数

计算重复发生的频率

在 Elasticsearch 中,我试图计算数据集中不同字段值的数量,其中字段值:

  • 只出现一次。
  • 出现两次或以上。

从某种意义上说,我试图计算重复发生的频率。我怎样才能做到这一点?

例子

假设我有以下 Elasticsearch 文档:

{ "myfield": "bob" }
{ "myfield": "bob" }
{ "myfield": "alice" }
{ "myfield": "eve" }
{ "myfield": "mallory" }
Run Code Online (Sandbox Code Playgroud)

由于“alice”、“eve”和“mallory”出现一次,而“bob”出现两次,我预计:

number_of_values_that_appear_once: 3
number_of_values_that_appear_twice_or_more: 1
Run Code Online (Sandbox Code Playgroud)

我可以通过术语聚合并查看doc_count每个存储桶的部分方式。术语聚合的输出myfield如下所示:

"buckets": [
  {
    "key": "bob",
    "doc_count": 3
  },
  {
    "key": "alice",
    "doc_count": 1
  },
  ...
]
Run Code Online (Sandbox Code Playgroud)

doc_count == 1例如,从这个输出中,我可以对桶的数量进行求和。但这无法扩展,因为我经常有数千个不同的值,因此遗愿清单将是巨大的。

distinct aggregation elasticsearch

5
推荐指数
1
解决办法
1980
查看次数

带有自定义 agg 函数的 pandas groupby 太慢或使用太多内存

我在 15M 行数据帧上运行 groupby,按 2 个键(每个键最多 30 个字符)进行分组,并应用返回多个值的自定义聚合函数,然后写入 CSV。我有两种方法,一种方法耗尽内存并失败,另一种方法太慢(需要超过 24 小时才能运行这么远......)。简化代码如下。

是否有: - 有什么方法可以减少方法 1 的内存使用,或者 - 有什么方法可以加快方法 2 中的迭代器速度

import pandas as pd
import numpy as np

def myfunct(x):
    # test function
    return 1,2,3

# fake the dataset
df = pd.DataFrame(np.random.randn(1500,3), columns=['a', 'b', 'c'])

df['key1'] = np.random.choice(['A','B','C','D','E'], df.shape[0])
df['key2'] = np.random.choice(['A','B','C','D','E'], df.shape[0])

# group and aggregate
grouped = df.groupby(['key1', 'key2'], sort=False)


#
#  APPROACH 1.
#
# Works but runs out of memory on 15M row datafram with 30 …
Run Code Online (Sandbox Code Playgroud)

python aggregation pandas

5
推荐指数
0
解决办法
1589
查看次数

MongoDb $addFields 和 $match

在我的 mongodb 查询中,我使用 $addFields 添加由其他三个字段连接的 ID 字段。我的问题是,如果我将新添加的字段与我要查询的值匹配,则不会得到任何结果。对于其他领域,它们工作得很好。

聚合顺序

什么是聚合

data = await model.aggregate([
            {
                $project: {
                    projectName: 1,
                    price: 1,
                    'document': '$$ROOT'
                }
            },
            {
                $addFields:{
                    'document.id': {$concat: ['$document.propertyId.prefix','$document.propertyId.number']}
                }
            },
            {
                $match: {
                    $and: [
                        {
                            $or: [
                                {id: {$regex: '.*' + req.query.search + '.*', $options: "i"}},
                                {projectName: {$regex: '.*' + req.query.search + '.*', $options: "i"}},

                                /*This also doesnt work*/
                                // {'document.id': {$regex: '.*' + req.query.search + '.*', $options: "i"}},
                                // {'document.projectName': {$regex: '.*' + req.query.search + '.*', $options: …
Run Code Online (Sandbox Code Playgroud)

aggregation mongodb node.js

5
推荐指数
1
解决办法
1万
查看次数

使用 $project 和 $sort 的 MongoDb 聚合查询

我的MongoDb集合如下

{
    "_id" : ObjectId("5a187babdbf0a03cdca0d0bc"),
    "aggregationDate" : "2017-10-31",
    "ipaddress" : "10.65.66.184",
    "first" : {
        "count" : 3
    },
    "second" : {
        "count" : 2
    },
    "third" : {
        "count" : 3
    },
}

{
    "_id" : ObjectId("5a187babdbf0a03cdca0d0bd"),
    "aggregationDate" : "2017-10-31",
    "ipaddress" : "10.65.66.182",
    "first" : {
        "count" : 4
    },
    "second" : {
        "count" : 10
    },
    "third" : {
        "count" : 4
    },
}

{
    "_id" : ObjectId("5a187babdbf0a03cdca0d0be"),
    "aggregationDate" : "2017-10-31",
    "ipaddress" : "10.65.66.189",
    "first" : {
        "count" : …
Run Code Online (Sandbox Code Playgroud)

aggregation mongodb

5
推荐指数
1
解决办法
6641
查看次数

如何在 MongoDB C# 聚合管道中使用 Addfields

Mongo DB 的聚合管道有一个“AddFields”阶段,允许您将新字段投影到管道的输出文档,而无需知道哪些字段已存在。

似乎这尚未包含在 Mongo DB 的 C# 驱动程序中(使用版本 2.7)。

有谁知道是否有其他选择?也许是“项目”阶段的一面旗帜?

c# aggregation mongodb

5
推荐指数
2
解决办法
3509
查看次数

Spring Boot MongoDB 聚合与 ReplaceRoot/如何获取组中的最新项目

我想在 Spring Boot 应用程序中获取此 MongoDB 查询的结果。

db.getCollection('contentSource').aggregate( [ { $sort: { "modified": -1 } }, 
{ $group: { _id: "$sourceId", cs: { $push: "$$ROOT" } }}, 
{ $replaceRoot: { newRoot: { $arrayElemAt: ['$cs', 0] } }} ] )
Run Code Online (Sandbox Code Playgroud)

有谁知道如何将 replaceRoot 添加到我的聚合中?

spring aggregation mongodb

5
推荐指数
1
解决办法
1570
查看次数

如何使用 Pandas groupby() 将列的逗号分隔项的字符串聚合到列表中?

我有如下数据:

NAME    ETHNICITY_RECAT TOTAL_LENGTH    3LETTER_SUBSTRINGS
joseph  fr              14              jos, ose, sep, eph
ann     en              16              ann
anne    ir              14              ann, nne
tom     en              18              tom
tommy   fr              16              tom, omm, mmy
ann     ir              19              ann
... more rows
Run Code Online (Sandbox Code Playgroud)

3LETTER_SUBSTRINGS 值是字符串,它捕获 NAME 变量的所有 3 字母子字符串。我想将它聚合到一个列表中,每个逗号分隔的项目按每一行附加到列表中,并被视为一个列表项。如下:

ETHNICITY_RECAT TOTAL_LENGTH            3LETTER_SUBSTRINGS
                min max mean            <lambda>
fr              2   26  13.22           [jos, ose, sep, eph, tom, oom, mmy, ...]
en              3   24  11.92           [ann, tom, ...]
ir              4   23  12.03           [ann, nne, ann, ...]
Run Code Online (Sandbox Code Playgroud)

我使用以下代码“完成”了它:

aggregations …
Run Code Online (Sandbox Code Playgroud)

aggregation python-3.x pandas pandas-groupby

5
推荐指数
1
解决办法
794
查看次数

MongoDB $lookup 和 $map 对象数组

我试图这样做几天,但找不到任何成功

我正在使用 MongoDB,我尝试使用许多管道步骤来完成它,但找不到方法。

我有一个玩家集合,每个玩家包含一个items数组

{
    "_id": ObjectId("5fba17c1c4566e57fafdcd7e"),
    "username": "moshe",
    "items": [
        {
            "_id": ObjectId("5fbb5ac178045a985690b5fd"),
            "equipped": false,
            "itemId": "5fbb5ab778045a985690b5fc"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我有一个项目集合,其中包含有关播放器items数组中每个项目的更多信息。

{
    "_id": ObjectId("5fbb5ab778045a985690b5fc"),
    "name": "Axe",
    "damage": 4,
    "defense": 6
}
Run Code Online (Sandbox Code Playgroud)

我的目标是拥有一个玩家文档,其中包含有关其items数组中项目的所有信息,因此它看起来像这样:

{
    "_id": ObjectId("5fba17c1c4566e57fafdcd7e"),
    "username": "moshe",
    "items": [
        {
            "_id": ObjectId("5fbb5ac178045a985690b5fd"),
            "equipped": false,
            "itemId": "5fbb5ab778045a985690b5fc",
            "name": "Axe",
            "damage": 4,
            "defense": 6
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

aggregation mongodb mongodb-query

5
推荐指数
2
解决办法
1527
查看次数