标签: positional-operator

Python argparse位置参数和子命令

我正在使用argparse,我正在尝试混合子命令和位置参数,并出现了以下问题.

这段代码运行正常:

import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()

parser.add_argument('positional')
subparsers.add_parser('subpositional')

parser.parse_args('subpositional positional'.split())
Run Code Online (Sandbox Code Playgroud)

上面的代码将args解析为Namespace(positional='positional'),但是当我更改位置参数以使nargs ='?'时 因此:

import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()

parser.add_argument('positional', nargs='?')
subparsers.add_parser('subpositional')

parser.parse_args('subpositional positional'.split())
Run Code Online (Sandbox Code Playgroud)

它出错了:

usage: [-h] {subpositional} ... [positional]
: error: unrecognized arguments: positional
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

python argparse subcommand positional-operator

11
推荐指数
3
解决办法
5633
查看次数

在深度嵌套的文档查询中使用MongoDB的位置运算符$

是否可以将位置运算符'$'与深层嵌套文档数组上的查询结合使用?

考虑以下定义'user'的嵌套文档:

{
   username: 'test',
   kingdoms: [

      {
          buildings: [

              {
                  type: 'castle'

              },
              {
                  type: 'treasury'
              },

              ...

          ]

      },

      ...

   ] 
}
Run Code Online (Sandbox Code Playgroud)

我们希望为特定用户返回"城堡",例如:

{
    kingdoms: [{

        buildings: [{

            type: 'castle'

        }]

    }]
}
Run Code Online (Sandbox Code Playgroud)

因为你不能两次使用$运算符(https://jira.mongodb.org/browse/server-831)我知道我也不能查询某个特定的王国,所以我正在尝试写一个查找语句第n个王国.

这在更新深度嵌套的子文档(Mongodb更新深层嵌套的子文档)时似乎有意义,但我在查找查询方面的成功较少.

我可以通过查询返回第一个王国的建筑物:

db.users.findOne(
    { username: 'test' },
    { kingdoms: {$slice: [0, 1]}, 'kingdom.buildings': 1 }
);
Run Code Online (Sandbox Code Playgroud)

但这会归还那个王国的所有建筑物.

按照位置运算符的单级示例,我正在尝试这样的查询:

db.users.findOne(
    { username: 'test', 'kingdoms.buildings.type': 'castle' },
    { kingdoms: {$slice: [n, 1]}, 'kingdom.buildings.$': 1 }
);
Run Code Online (Sandbox Code Playgroud)

以形式:

db.collection.find( { <array.field>: …
Run Code Online (Sandbox Code Playgroud)

nested mongodb positional-operator

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

如何在MongoDB中的Array元素中切换布尔字段?

考虑这些数据

{ 
    "_id" : ..., 
    "array" : [
        { "name" : "value1","flag" : true } ,
        { "name" : "value2","flag" : false }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想切换第二个数组元素(从false到true)

我知道我可以使用非常有用的$ position运算符更新特定元素,如下所示:

db.myCollection.update(
    {'array.name':'value2'},
    {
        $set: {
            'array.$.flag':true
        }
    },false,true);  
Run Code Online (Sandbox Code Playgroud)

但有没有办法使用$ position运算符进行值设置?

比如这样?

db.myCollection.update(
    {'array.name':'value2'},
    {
        $set: {
            'array.$.flag':'!array.$.flag' //<--
        }
    },false,true);  
Run Code Online (Sandbox Code Playgroud)

mongodb positional-operator

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

bash find,只删除文件 - 参数的顺序

今天说是4月8日,我在bash中执行以下操作.

cd /tmp
mkdir hello
touch -d 2015-04-01 hello
Run Code Online (Sandbox Code Playgroud)

然后,假设我要删除/ tmp中超过一天的所有文件,但不删除目录,我执行此操作:

find /tmp -mtime +1 -delete -type f
Run Code Online (Sandbox Code Playgroud)

如果目录"hello"不是文件,为什么会删除?

谢谢!

bash find positional-operator find-util

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