小编kad*_*amb的帖子

如何在mongodb中使用for循环

我需要向mongodb集合插入一个新字段(列),该集合现在有5246个文档.该字段应自动递增.所以我使用for循环.我的查询如下`

for(i=1;i<=5246;i++) {
    db.coll.update({},{$set:{"new_field":i}},false,true)
}; 
Run Code Online (Sandbox Code Playgroud)

但我的不好输出是,

{new_field:5246},{new_field:5246},{new_field:5246},.......
Run Code Online (Sandbox Code Playgroud)

查询有问题吗?

javascript mongodb mongodb-query

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

在mongo中创建一个条件TTL

我想完成一项特殊的任务,但我没有找到任何特定的方法来做到这一点.假设我有一个用于发送邮件的应用程序.我在mongo的一个集合中记录了这些邮件.使用这个应用程序,我现在可以发送邮件或可以安排邮件将来.集合中的文档结构如下:

{
'_id' : 123456789,
'to_email' : 'xyz@gmail.com'
'from_email' : 'abc@gmail.com'
'subject': 'some subject'
'type' : '<1 if normal and 2 if scheduled>',
'createdDate' '<date when mail was sent or the request was created>',
'scheduledDate' : '<time for which mail is scheduled>'
.. and many more key-value pairs
}
Run Code Online (Sandbox Code Playgroud)

scheduledDate字段可以是零或任何日期,具体取决于是否已计划.我不想保留超过2天的数据,所以我在'createdDate'上创建了一个TTL索引,为期2天.但我也不想删除将来安排的行或请求.我正在寻找某种条件TTL,但无法找到任何这样的解决方案.

是否有任何可用的条件TTL或任何其他方式在mongodb中做到这一点.

我想创建一个TTL,其工作方式如下:

if(requestType!=2 and createdDate < -2days)
delete row;
Run Code Online (Sandbox Code Playgroud)

或者有没有办法可以使用任何语言对某些文档进行更改,以便它们不会过期.

编辑:我通过在预定邮件的情况下使用scheduledDate和requestDate的相同值解决了这个问题.

mongodb mongodb-query mongodb-indexes

6
推荐指数
2
解决办法
8681
查看次数

h2 数据库唯一索引名称的解决方法

我有一个 java 应用程序,它使用 Liquibase 进行迁移,到目前为止一直使用 MySQL 来运行测试用例。

我想使用 h2 数据库运行测试用例。为此,我对 JDBC 配置进行了必要的更改。但是当我运行时mvn test,出现以下错误:

索引“idx_workflow_id”已存在;SQL语句:

在调试时,我发现两个表具有相同名称的索引:idx_workflow_id,并且 h2 数据库具有数据库中具有唯一索引名称的一些限制。

现在的问题是数据库结构已经存在于 staging 和 prod 中,并且无法更改索引名称。

有什么方法可以运行 h2 数据库的迁移,而不创建索引或忽略它们。或者进行一些配置更改,这将允许数据库中具有相同名称的索引。

配置:

database:
    driverClass: org.h2.Driver
    url: "jdbc:h2:mem:my_db;MODE=MySQL;DATABASE_TO_UPPER=false;IGNORECASE=TRUE;DB_CLOSE_DELAY=-1"
    maxWaitForConnection: 1s
    minSize: ${MIN_DB_CONNECTIONS:-10}
    maxSize: ${MAX_DB_CONNECTIONS:-100}
    defaultTransactionIsolation: READ_COMMITTED
    checkConnectionWhileIdle: false
    checkConnectionOnBorrow: true
    checkConnectionOnConnect: true
    validationQuery: "SELECT 1"
    properties:
      hibernate.dialect: org.hibernate.dialect.H2Dialect
      hibernate.show_sql: false
      hibernate.hbm2ddl.auto: none
      hibernate.session.events.log: false
      hibernate.generate_statistics: true
      org.hibernate.stat: INFO
      charSet: UTF-8
Run Code Online (Sandbox Code Playgroud)

java mysql indexing h2 unique-constraint

6
推荐指数
1
解决办法
1161
查看次数

我们能比较一下mongodb的时间吗?

我以日期时间格式存储了happyHours的酒店.现在我想取所有happyHours大于当前时间的酒店.

根据我的知识,我知道有获取结果的日期比较,但这将比较整个日期时间对象.

有没有办法比较时间?

db中的Happyhours日期对象示例:

"happyHours" : {
    "mon" : [ 
        {
            "startTime" : ISODate("2016-04-11T06:30:59.000Z"),
            "endTime" : ISODate("2016-04-11T14:30:59.000Z")
        }
    ],
    "tue" : [ 
        {
            "startTime" : ISODate("2016-04-11T06:30:59.000Z"),
            "endTime" : ISODate("2016-04-11T14:30:59.000Z")
        }
    ],
    "wed" : [ 
        {
            "startTime" : ISODate("2016-04-11T06:30:59.000Z"),
            "endTime" : ISODate("2016-04-11T14:30:59.000Z")
        }
    ],
    "thu" : [ 
        {
            "startTime" : ISODate("2016-04-11T06:30:59.000Z"),
            "endTime" : ISODate("2016-04-11T14:30:59.000Z")
        }
    ],
    "fri" : [ 
        {
            "startTime" : ISODate("2016-04-11T06:30:59.000Z"),
            "endTime" : ISODate("2016-04-11T14:30:59.000Z")
        }
    ],
    "sat" : [ 
        {
            "startTime" : ISODate("2016-04-11T06:30:59.000Z"),
            "endTime" : ISODate("2016-04-11T14:30:59.000Z")
        }
    ],
    "sun" …
Run Code Online (Sandbox Code Playgroud)

time mongodb datetime-conversion

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

Kubernetes Pod 在具有首选模式的节点之间分布

我正在努力将我的应用程序迁移到 Kubernetes。我正在使用 EKS。

我想将我的 Pod 分布到不同的节点,以避免出现单点故障。我读到了pod-affinityandanti-affinityrequiredandpreferred模式。

这个答案提供了一个非常好的方法来实现这一点。

但我的疑问是,假设我有 3 个节点,其中 2 个节点已满(资源方面)。如果我使用requiredDuringSchedulingIgnoredDuringExecution,k8s 将启动新节点并将 Pod 分发到每个节点。如果我使用preferredDuringSchedulingIgnoredDuringExecution,它将检查首选节点,并且不会找到不同的节点,只会将所有 Pod 部署在第三个节点上。在这种情况下,它将再次成为单点故障。

我该如何解决这种情况?

我能想到的一种方法是拥有一个超额配置的集群,这样总会有一些额外的节点。

第二种方法,我不知道如何做到这一点,但我认为应该有一种同时使用requiredDuringSchedulingIgnoredDuringExecution和 的方法preferredDuringSchedulingIgnoredDuringExecution

谁能帮我这个?我错过了什么吗?在这种情况下人们如何工作?

我是 Kubernetes 的新手,所以如果我错了或者遗漏了什么,请随时纠正我。

提前致谢

笔记:

我在同一节点上运行几个类似的 pod 没有问题,只是不希望所有 pod 都在同一节点上运行,因为只有一个节点可供部署。

kubernetes kubernetes-pod amazon-eks

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

Kubernetes 可以在没有 LXD 守护进程的情况下管理 LXC 容器吗?

我在 Oracle Linux(主机)上运行多个 LXC 容器,并在这些容器内运行 EBS 应用程序。
现在我每5台主机上就有10多个容器。
我正在寻找管理这些容器的解决方案。研究告诉我,Kubernetes 是一个用于管理容器并用它执行其他一些活动(例如自动缩放等)的解决方案。
但 Kubernetes 与 LXD 一起用于 lxc 容器。
有什么方法可以直接使用 Kubernetes 管理 lxc 容器吗?
任何帮助将非常感激!

谢谢 !!

containers lxc kubernetes

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

在同一个 kubernetes 集群上安装两个 traefik 入口控制器

我有一种情况,我计划在 Kubernetes 集群内使用两个单独的 traefik 入口控制器。

我有一些 URL,我希望只能通过 VPN 访问,而很少有一些 URL 可以公开访问。

在当前的架构中,我有一个 traefik-ingress 控制器和两个独立的 ALB,一个内部的,一个面向互联网的,都指向 traefik。
假设我有一个 URLpublic.example.comprivate.example.com. public.example.com指向面向互联网的 ALB,private.example.com指向内部 ALB。但是,如果有人知道 的指向public.example.com并指向private.example.com他的相同指向/etc/hosts,他将能够访问我的私人网站。

为了避免这种情况,我计划运行两个单独的 traefik-ingress-controller,一个仅提供私有 URL 和一个公共 URL。这可以做到吗?或者有没有其他方法可以避免这种情况

security kubernetes traefik kubernetes-ingress traefik-ingress

4
推荐指数
1
解决办法
5387
查看次数

使用Sendgrid和Google App发送电子邮件

我正在创建一个用于发送邮件的googlesheet插件。为了发送邮件,我正在使用sendgrid。我找不到用于使用Google Appscript发送邮件的任何文档或示例代码。这是我正在使用的代码,但这不好。

var data = {

        "api_user":"username",
        "api_key":"ioioi",
        "to":[],
        "tonnage":[],
        "cc":[],
        "ccname":[],
        "bcc":[],
        "subject":sub,
        "from":from,
        "html":htmlBody
      }

      var headers = { "Accept":"application/json", 
                     "Content-Type":"application/json"
                    };



        data = JSON.stringify(data);

        var options = {
          "method": "POST",
          "payload": data,
          "headers": headers,
          "muteHttpExceptions": true
        };

var res = UrlFetchApp.fetch("https://api.sendgrid.com/api/mail.send.json", options);
Run Code Online (Sandbox Code Playgroud)

有没有人有任何想法或代码使用googl appscript通过sendgrid发送电子邮件?

email-integration google-apps-script sendgrid

3
推荐指数
1
解决办法
1028
查看次数

Redis中的HSET和HMSET是否相同

我正在阅读文档并尝试使用Redis,并遇到了HSET和HMSET命令。而且我找不到它们之间的任何区别,我尝试搜索并发现以下问题,

Redis数据库中的HSET和HMSET方法有什么区别

并接受答案:

HMSET类似于HSET,但是它允许一次设置多个字段/值对。

但是当我尝试时,HSET还允许一次设置多个字段/值对。

请查看下面的屏幕截图,对我来说,两者似乎相同:

在此处输入图片说明

谁能解释一下两者之间的区别。或用例,其中一个应该比另一个使用。

谢谢

database redis

2
推荐指数
1
解决办法
1531
查看次数

在单个命令中删除python-Redis中的多个键

我有一个密钥列表,想删除所有密钥。没有模式匹配,没什么,只是简单的删除。我不想运行循环,因为大约有3-4k键。

我试图将列表传递到删除功能,但没有用

redis_keys = [key1,key2,key3,key4....keyn]
redis.delete(redis_keys)
Run Code Online (Sandbox Code Playgroud)

文档中显示

在此处输入图片说明

但不是如何传递多个密钥。同样,所有问题都与在将键与模式匹配时删除有关,但与可用的确切键无关。

python redis

2
推荐指数
1
解决办法
1585
查看次数

如何将文本放置在抽屉标题的左下角并降低抽屉标题的高度?

所以我只想将文本放置在抽屉标题的左下角,并减少抽屉标题的高度

drawer: new Drawer
      (
        child: ListView
        (
          children: <Widget>
          [
            new DrawerHeader
            (
              child: Text("Drawer Header"),
              decoration: BoxDecoration
              (
                color: Colors.blueGrey
              ),
            )
          ],
        ),
      ),
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

android flutter

2
推荐指数
1
解决办法
2416
查看次数

Kubernetes:如何使用具有管道的 Exec 编写 livenessprobe 和 readinessprobe

我正在使用 Exec 探针添加活性探针和就绪探针。
我的配置如下:

readinessProbe:
    exec:
      command: "/usr/bin/jps -l | grep QueueProcess"
    periodSeconds: 10 
    failureThreshold: 2
    successThreshold: 2
Run Code Online (Sandbox Code Playgroud)

当上面的方法不起作用时。我对此进行了修改并尝试了:

readinessProbe:
     exec:
       command: ["/usr/bin/jps", "-l", "|", "grep","QueueProcess"]
     periodSeconds: 10 
     failureThreshold: 2
     successThreshold: 2
Run Code Online (Sandbox Code Playgroud)

运行时kubectl describe pod,得到以下输出:

  Normal   Created           37s                  kubelet             Created container app1
  Normal   Started           37s                  kubelet             Started container app1
  Warning  Unhealthy         6s (x3 over 26s)     kubelet             Readiness probe failed: invalid argument count
usage: jps [-help]
       jps [-q] [-mlvV] [<hostid>]

Definitions:
    <hostid>:      <hostname>[:<port>]

Run Code Online (Sandbox Code Playgroud)

我尝试了另一个应用程序,我正在其中运行grpcurl来调用运行状况检查:

readinessProbe:
    exec:
      command: …
Run Code Online (Sandbox Code Playgroud)

pipe exec kubernetes readinessprobe

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

使用通配符获取所有 RDS 实例的 AWS Cloudwatch 指标

出于某些警报和监控目的,我正在尝试获取 RDS cloudwatch 指标。大约有 50 个 RDS 实例,并且希望在一个 API 调用中获取所有这些实例的指标(我使用的是 boto3)。这是我的代码:

response = cloudwatch_client.get_metric_data(
    MetricDataQueries=[
        {
            'Id': 'fetching_data_for_something',
            'MetricStat': {
                'Metric': {
                    'Namespace': 'AWS/RDS',
                    'MetricName': 'FreeStorageSpace',
                    'Dimensions': [
                        {
                            'Name': 'DBInstanceIdentifier',
                            'Value': '*'
                        },
                    ]
                },
                'Period': 300,
                'Stat': 'Average'
            },
            'ReturnData': True
        },
    ],
    StartTime=datetime(2019, 6, 11,13,0,0),
    EndTime=datetime(2019, 6, 11,13,20,00),
    ScanBy='TimestampDescending',
    MaxDatapoints=123
) 
Run Code Online (Sandbox Code Playgroud)

但这返回一个空结果,但是当我搜索特定的数据库实例时,它返回结果。这是工作:

'Dimensions': [
{
    'Name': 'DBInstanceIdentifier',
    'Value': 'name_of_db'
},
]
Run Code Online (Sandbox Code Playgroud)

但是,这不是:

'Dimensions': [
{
    'Name': 'DBInstanceIdentifier',
    'Value': '*'
},
]
Run Code Online (Sandbox Code Playgroud)

有什么办法可以做到这一点吗?一次获取所有数据库的指标?

amazon-web-services amazon-rds amazon-cloudwatch boto3 amazon-cloudwatch-metrics

0
推荐指数
1
解决办法
1257
查看次数