小编Jul*_*tel的帖子

MongoDB聚合查找匹配数组

我有两个集合,一个是用户集合,另一个是集合集合.在groups文档中看起来像这样:

{
    "_id": ObjectId("...")
    "members": [ObjectId("..."), ObjectId("..."), ObjectId("...")]
}
Run Code Online (Sandbox Code Playgroud)

users集合中,文档如下所示:

{
    "_id": ObjectId("...")
    "first_name": "...",
    "last_name": "...",
    "phone": "..."
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是在users集合中添加一个聚合,我将一个$lookup阶段添加到管道中,我进入groups集合并根据_id用户文档members中的组是否在组文档中的数组中从用户获取组.

我有以下但我不知道如何继续.

db.users.aggregate([
    {
        "$match": { "_id": ObjectId("...") }
    },
    {
        "$lookup": {
            "from": "groups",
            "let": {"_id": "$_id"},
            "pipeline": [{"$match": ???}], <- match when $$_id is inside $members
            "as": "group"
    }
]);
Run Code Online (Sandbox Code Playgroud)

我知道MongoDB中的聚合框架不适用于数组,并且有一个$unwind阶段,但我真的不知道如何组合$unwind$match得到我想要的结果.

我想要的是:

{
    "_id": ObjectId("..."),
    "group": ObjectId("..."),
    (other …
Run Code Online (Sandbox Code Playgroud)

mongodb aggregation-framework

8
推荐指数
1
解决办法
5106
查看次数

Bitbucket Pipeline 中本地构建的 Docker 镜像

我需要的是一种在存储库中构建 Dockerfile 作为映像并将其用作下一步的映像的方法。

我已尝试下面的 Bitbucket Pipeline 配置,但在“构建”步骤中,其缓存中似乎没有图像(在上一步中构建)。

pipelines:
  branches:
    main:
      - step:
          name: Docker Image(s)
          script:
            - docker build -t foo/bar .docker/composer 
          services:
            - docker
          caches:
            - docker
      - step:
          name: Build
          image: foo/bar
          script:
            - echo "Hello, World"
            - composer --version
          services:
            - docker
          caches:
            - docker
Run Code Online (Sandbox Code Playgroud)

我已经尝试了下面 StackOverflow 问题的答案,但该问题的上下文是在下一步中推送图像。这与使用为该步骤本身构建的图像无关。

Bitbucket 管道使用上一步中本地构建的图像

bitbucket docker bitbucket-pipelines

8
推荐指数
1
解决办法
2972
查看次数

Prometheus(公制)使用反向正则表达式匹配/负向前瞻重新标记配置

现在我正在从节点导出器中抓取指标。节点导出器导出的一些指标具有标签mountpoint

我想删除具有此标签且与正则表达式不匹配的时间序列。我尝试使用该keep操作(因为我想保留与此正则表达式匹配的时间序列,但这也会删除所有其他没有mountpoint标签的指标。

metric_relabel_configs:
  - source_labels: ['mountpoint']
    regex: '(\/home|\/var\/domains)\/something.*'
    action: keep
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用该drop操作,但这需要我使用负向前瞻来反转正则表达式(这不受支持,因为 Prometheus 当然是用 Go 编写的)。

我对此有何选择?

重要的是,我无法控制节点导出器的配置方式,因此我无法将节点导出器本身配置为不导出某些特定安装点的指标(如果可能的话)。

prometheus prometheus-node-exporter

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