标签: conditional-statements

是否可以在 MongoDB 中的 $cond 中编写正则表达式

我需要使用 $cond 来组合不同的列,我需要写的一个 $cond 如下:

create_widget: {
        $sum:{
          $cond:[{$and: [ {$eq: ['$Method', 'POST']},
                {Url:{$regex: /.*\/widgets$/}} ]}, 1, 0]
        }
    }
Run Code Online (Sandbox Code Playgroud)

而且这段代码不对,好像正则表达式不能放在这里。有没有其他方法可以做到这一点?我想匹配 Url 和正则表达式并将代码放在 $cond 下。

示例数据看起来像

{"BrandId":"a","SessionId":"a1","Method":"POST","Url":"/sample/widgets"}
{"BrandId":"a","SessionId":"a2","Method":"POST","Url":"/sample/blog"}
{"BrandId":"b","SessionId":"b1","Method":"PUT","Url":"/sample/widgets"}
Run Code Online (Sandbox Code Playgroud)

我写的整个代码如下:

db.tmpAll.aggregate([
    {$group: {
        _id: {BrandId:'$BrandId'},
        SessionId: {$addToSet: '$SessionId'},
        create_widget: {
            $sum:{
              $cond:[{$and: [ {$eq: ['$Method', 'POST']},
                    {} ]}, 1, 0]
            }
        }
    }},
    {$group: {
        _id: '$_id.BrandId',
        distinct_session: {$sum: {$size: '$SessionId'}},
        create_widget: {$sum: '$create_widget'}
    }}
]);
Run Code Online (Sandbox Code Playgroud)

示例代码的预期结果是

{ "_id" : "a", "distinct_session" : 2, "create_widget" : 1 }
{ "_id" …
Run Code Online (Sandbox Code Playgroud)

regex mongodb conditional-statements

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

如何修改 Pandas DataFrame 中的单元格?

我需要更改 DataFrame 中的单个元素。我尝试做这样的事情,但它不起作用:

for index, row in df.iterrows():
    if df.at[row, index] == 'something':
        df.at[row, index] = df.at[row, index] + 'add a string'
    else:
        df.at[row, index] = df.at[row, index] + 'add a value'
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python string conditional-statements dataframe pandas

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

组内的 Cumsum 并在 Pandas 条件下重置

我有一个包含两列 ID 和活动的数据框。活动为 0 或 1。我想要一个包含自上次活动为 1 以来递增数字的新列。但是,计数应仅在一个组 (ID) 内。如果活动为 1,则计数列应重置为 0,然后重新开始计数。

所以,我有一个包含以下内容的数据框:

在此处输入图片说明

想要的是这个:

在此处输入图片说明

有人能帮我吗?

group-by count conditional-statements pandas cumsum

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

Doctrine 查询生成器使用 join 嵌套 orX 和 andX 条件

我有两个实体UserCalendarEvent。我的用户附属于一家工厂,calendarEvent 可用于了解用户是否被“借用”到他所属工厂的另一家工厂......

我的两个实体是这样的:

用户:

class User extends BaseUser
{

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @var string
     * @ORM\Column(name="firstname", type="string", length=255, nullable=true)
     */
    private $firstname;

    /**
     * @var string
     * @ORM\Column(name="lastname", type="string", length=255, nullable=true)
     */
    private $lastname;

    /**
     * @ORM\OneToMany(targetEntity="AppBundle\Entity\CalendarEvent", mappedBy="user")
     */
    private $events;

    /**
     * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Factory", inversedBy="users")
     * @ORM\JoinColumn(name="factory_id", referencedColumnName="id")
     */
    private $factory;

}
Run Code Online (Sandbox Code Playgroud)

日历事件:

class CalendarEvent
{

    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * …
Run Code Online (Sandbox Code Playgroud)

doctrine join repository query-builder conditional-statements

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

嵌套 if 条件与多个单独的 if 条件(每个条件均包含 return 语句)

下面两个函数中最专业的代码风格是什么?
如果函数变得更复杂和更大(例如有 20 个检查)怎么办?
注意:我需要在每次检查后做一些事情,所以我不能将所有内容连接到一个 if 语句中,例如:
if (vehicle.isBus) && (vehicle.numberOfWheels == 6) && (vehicle.motorVersion == 2019)

//first alternative
public bool validate(Vehicle vehicle)
{
    if(vehicle.isBus)
    {
        //do some stuff here related to vehicle.isBus
        if (vehicle.numberOfWheels == 6)
        {
            //do some stuff here related to vehicle.numberOfWheels
            if (vehicle.motorVersion == 2019)
            {
                //do some stuff here related to vehicle.motorVersion
                return true;
            }
        }
    }
    return false;
}

//second alternative
public bool validate(Vehicle vehicle)
{
    if (!vehicle.isBus)
    {
        return false;
    }
    //do some …
Run Code Online (Sandbox Code Playgroud)

.net c# if-statement coding-style conditional-statements

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

if (static_cast<bool>(x)) 与 if (x)

我有一位同事经常在条件语句中对 bool 进行显式强制转换,如下所示:

\n\n
SomeType *ptr = /* some value */;\nif (static_cast<bool>(ptr)) {\n    // do something\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我一直找不到如此冗长的充分理由。有任何想法吗?

\n\n

编辑:同事说 \xe2\x80\x99 是为了清晰和明确,但我不\xe2\x80\x99t 发现这个解释非常引人注目。我在这里提出这个问题是为了看看其他 C++ 专家是否建议这样做,如果是的话,也许会出现一个更有说服力的论点。

\n

c++ casting conditional-statements implicit-conversion explicit-conversion

7
推荐指数
2
解决办法
1439
查看次数

为什么在`array.length &amp;&amp; ...`的短路评估中呈现“0”

目前,我看到这样的行为:

render() {
   const list = [];
   return (
      <div>
         { list.length && <div>List rendered</div> }
      </div>
   )
}
Run Code Online (Sandbox Code Playgroud)

我的预期是在该条件下没有呈现任何内容,但是呈现了字符串“0”(字符串“0”是list.length)。我不知道为什么。有人可以帮我向 React 解释这个案例吗?

javascript render conditional-statements reactjs

7
推荐指数
2
解决办法
1388
查看次数

如何根据多个变量的定义编写条件?

我时不时地发现自己需要编写具有两个或三个分支的条件:至少,一个用于定义所有两个或多个变量时,一个用于定义任何或不定义任何变量时。有时最后一个分支需要是两个独立的分支。写这个的一些简短而甜蜜的方式是什么?

null undefined conditional-statements raku

7
推荐指数
3
解决办法
142
查看次数

Gitlab CI:仅为受保护分支上存在的标记提交运行管道作业

我想创建一个仅在满足以下两个条件时才运行的管道:

  • 标签是指给定的提交
  • 提交存在于任何受保护的分支(即 master)
  • 可选:无论何时将标记的未受保护分支合并(使用合并请求)到受保护分支或将标记添加到受保护分支,都应运行该作业。

我试过了:

publish:
  stage: publish
  script:
    - echo "Publish!"
  rules:
    # Only publish if tag given and commit is present on a protected branch
    - if: '$CI_COMMIT_TAG && $CI_COMMIT_REF_PROTECTED == "true"'
Run Code Online (Sandbox Code Playgroud)

不作为任何工作$CI_COMMIT_TAG设置$CI_COMMIT_REF_PROTECTED设置为true。

我知道类似的问题:Gitlab ci run job on master with release tag onlyHow to run a gitlab-ci.yml job only on a tagged branch? .

我也知道在 gitlab 的问题中有/曾经有过广泛的讨论,有一些解决方案(或类似的解决方案)像这样

一般的问题似乎是,在 gitlab 中无法确定在给定分支上的提交是否可靠,因为未提供此信息(git 历史记录)。

这个问题是为了在 gitlab CI …

tags conditional-statements gitlab-ci

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

使用 Azure Devops Pipeline 中的变量进行条件 OR 操作

我有三个条件作为变量(isMaster、isRelease、isHotfix):

variables:
  isMaster: $[startsWith(variables['Build.SourceBranch'], 'refs/heads/master')]
  isRelease: $[startsWith(variables['Build.SourceBranch'], 'refs/heads/release/')]
  isHotfix: $[startsWith(variables['Build.SourceBranch'], 'refs/heads/hotfix/')]
  checkCondition: $[or(variables.isMaster, variables.isRelease)]
Run Code Online (Sandbox Code Playgroud)

问题是当我为 OR 条件(如 checkCondition)取两个“假”时。我应该得到“假”,但由于某种原因我得到“真”。

  - task: CmdLine@2
       inputs:
         script: |
           echo %BUILD_SOURCEBRANCH%
           echo %ISMASTER%
           echo %ISRELEASE%
           echo %ISHOTFIX%
           echo %CHECKCONDITION%
       condition: or(variables.isMaster ,variables.isRelease)
...
Result:
...
refs/heads/someBranch
False
False
False
True
Finishing: CmdLine
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么该条件会给出错误的结果?谢谢你!

yaml conditional-statements azure-devops azure-pipelines

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