我有点困惑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) 服务编排和聚合有什么区别?在 SO 的类似帖子中,有人提到这两个术语之间只有一线之隔。能否获得有关这条细线的更多详细信息?此外,什么是服务增强以及它如何与另外两个概念相关。
在 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例如,从这个输出中,我可以对桶的数量进行求和。但这无法扩展,因为我经常有数千个不同的值,因此遗愿清单将是巨大的。
我在 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) 在我的 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) 我的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) Mongo DB 的聚合管道有一个“AddFields”阶段,允许您将新字段投影到管道的输出文档,而无需知道哪些字段已存在。
似乎这尚未包含在 Mongo DB 的 C# 驱动程序中(使用版本 2.7)。
有谁知道是否有其他选择?也许是“项目”阶段的一面旗帜?
我想在 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 添加到我的聚合中?
我有如下数据:
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) 我正在使用 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 ×10
mongodb ×5
pandas ×2
associations ×1
c# ×1
composition ×1
distinct ×1
java ×1
node.js ×1
python ×1
python-3.x ×1
soa ×1
spring ×1
uml ×1