我将一个EBS卷附加到我的EC2实例,将其转换为EXT3文件系统,并成功安装它.然而,最初我被抛弃了主要是因为AWS控制台说我的EBS设备ID是什么.
根据AWS控制台:
i-xxxxxxx :/dev/sdf (attached)
Run Code Online (Sandbox Code Playgroud)
我认为这意味着我附加的EBS设备ID是/ dev/sdf.因此,当我尝试使用此设备ID将设备转换为文件系统时,我收到以下错误消息.
ubuntu@ip-xx-xx-xx-xx:~$ mkfs -t ext3 /dev/sdf
mke2fs 1.42 (29-Nov-2011)
Could not stat /dev/sdf --- No such file or directory
The device apparently does not exist; did you specify it correctly?
Run Code Online (Sandbox Code Playgroud)
然后经过一段时间的研究,我找到了这篇文章然后通过运行 cat /proc/partitions 发现我的真实设备ID是/ dev/xvdf而不是/ dev/sdf.
我的问题是为什么AWS控制台在实际上是/ dev/xvdf时会说它是/ dev/sdf?我认为必须有一些合乎逻辑的解释.
我将我们的Web服务器日志存储在MongoDB中,模式类似于以下内容:
[
{
"_id" : 12345,
"url" : "http://www.mydomain.com/xyz/abc.html",
....
},
....
]
Run Code Online (Sandbox Code Playgroud)
$project在我开始通过聚合管道传递集合之前,我试图使用运算符重新整形此模式.基本上,我需要添加一个名为"type"的新字段,稍后将用于执行group-by.新领域的逻辑非常简单.
if "url" contains "pattern_A" then set "type" = "sales lead";
else if "url" contains "pattern_B" then set "type" = "existing client";
...
Run Code Online (Sandbox Code Playgroud)
我想它必须是这样的:
db.weblog.aggregate(
{
$project : {
type : { /* how to implement the logic??? */ }
}
}
);
Run Code Online (Sandbox Code Playgroud)
我知道如何使用map-reduce(通过将"keyf"属性设置为实现上述逻辑的自定义JS函数)来执行此操作,但现在我正在尝试使用新的聚合框架来执行此操作.我尝试使用表达式运算符实现逻辑,但到目前为止无法使其工作.任何帮助/建议将不胜感激!
我有几个数字字段需要聚合.假设我的文档结构如下:
_id: 1234,
numValue1: 10,
numValue2: 20,
numValue3: 30,
numValue4: 40
Run Code Online (Sandbox Code Playgroud)
如果我想使用其中一个数字字段向我的管道添加计算字段,我可以这样做:
db.myCollection.aggregate(
{
$project : {
someComputedField : { $add:["$numValue1", 15] }
}
})
Run Code Online (Sandbox Code Playgroud)
如果我想根据其中两个字段添加一个计算字段,我知道我可以这样做:
db.myCollection.aggregate(
{
$project : {
someComputedField : { $add:["$numValue1", "$numValue2"] }
}
})
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是如果我需要做$ numValue1 + $ numValue2 + $ numValue3 + $ numValue4?
或者更有趣的是$ numValue1*($ numValue2 + $ numValue3)/ $ numValue4?