小编Bha*_*avi的帖子

$nin 与 $expr

我有一个查询来查找用户CreatedBy是否在SharedWith. 我想逆查询,以检查是否CreatedBy在不SharedWith

[
    {
        "$match": {
            "$and": [
                {
                    "$and": [
                        {
                            "SharedWith": {
                                "$exists": true
                            }
                        },
                        {
                            "$expr": {
                                "$in": [
                                    "$CreatedBy",
                                    "$Multi_User"
                                ]
                            }
                        }
                    ]
                }
            ]
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

MongoDB的不支持直接$nin$not用于$and查询。

任何想法如何实现这一点。

用户文档看起来像这样,

   Collection = [
        {"CreatedBy":
             {"_id": "User001",
              "Email": "user@eg.com",
              "Name": "User001"},
         "SharedWith": [
             {"_id": "User001",
              "Email": "user@eg.com",
              "Name": "User001"},
             {"_id": "User002",
              "Email": "user@eg.com",
              "Name": "User002"},
             {"_id": "User003",
              "Email": "user@eg.com",
              "Name": …
Run Code Online (Sandbox Code Playgroud)

mongodb pymongo mongodb-query aggregation-framework

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

VSCode 上的发现测试错误:生成 python ENOENT

我在 vscode 中运行一个 python 项目virtualenv。Python解释器设置正确。当我试图发现测试时,它给了我一个错误说

python /Users/user/.vscode/extensions/ms-python.python-2019.10.44104/pythonFiles/testing_tools/run_adapter.py discover pytest -- -s project/
Test Discovery failed: 
Error: spawn /Users/<username>/apps/project/venv/bin/python ENOENT
Run Code Online (Sandbox Code Playgroud)

我的 vscode settings.json 看起来像这样,我还没有配置 launch.json

{
    "python.pythonPath": "/Users/<username>/apps/project/venv/bin/python",
    "python.testing.unittestEnabled": false,
    "python.testing.nosetestsEnabled": false,
    "python.testing.pytestEnabled": true,
    "python.testing.pytestArgs": [
        "project"
    ],
}
Run Code Online (Sandbox Code Playgroud)

当我/Users/<username>/apps/project/venv/bin/python在终端上输入时,python shell 打开了。

ENOENT 通常意味着它是一个无效的路径,但该路径似乎完全没问题。

$echo $PATH
/Users/<username>/apps/project/venv/bin
Run Code Online (Sandbox Code Playgroud)

python visual-studio visual-studio-code vscode-python

8
推荐指数
3
解决办法
3175
查看次数

Sklearn LabelEncoder在sort中抛出TypeError

我正在使用Kaggle的Titanic数据集学习机器学习.我正在使用sklearn的LabelEncoder将文本数据转换为数字标签.以下代码适用于"性别",但不适用于"已启航".

encoder = preprocessing.LabelEncoder()
features["Sex"] = encoder.fit_transform(features["Sex"])
features["Embarked"] = encoder.fit_transform(features["Embarked"])
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误

Traceback (most recent call last):
  File "../src/script.py", line 20, in <module>
    features["Embarked"] = encoder.fit_transform(features["Embarked"])
  File "/opt/conda/lib/python3.6/site-packages/sklearn/preprocessing/label.py", line 131, in fit_transform
    self.classes_, y = np.unique(y, return_inverse=True)
  File "/opt/conda/lib/python3.6/site-packages/numpy/lib/arraysetops.py", line 211, in unique
    perm = ar.argsort(kind='mergesort' if return_index else 'quicksort')
TypeError: '>' not supported between instances of 'str' and 'float'
Run Code Online (Sandbox Code Playgroud)

数据集的描述

machine-learning scikit-learn sklearn-pandas

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

在mongodb聚合中项目嵌套嵌入文档

我有一个嵌套的嵌入式文档,看起来像这样。每个帖子都有 n 条评论,每条评论都有一个包含姓名和电子邮件 ID 的用户详细信息。

我只想将评论用户的姓名投影到列表中

{
    "PostId":"Post001",
    "Comments":[
         {"_id": "001",
          "CommentedBy":{
            "_id":"User001",
            "Name":"UserName001",
            "email":"user001@eg.com"
            }
         },
         {"_id": "002",
           "CommentedBy":{
            "_id":"User002",
            "Name":"UserName002",
            "email":"user001@eg.com"
            }
         },
         {"_id": "003",
          "CommentedBy":{
            "_id":"User003",
            "Name":"UserName003",
            "email":"user001@eg.com"
            }
         }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我想通过使用 mongodb 的聚合管道转换成看起来像这样的东西。

{
    "PostId":"Post001"
    "Comments":[
         {"_id": "001",
          "CommentedBy":"UserName001",
         },
         {"_id": "002",
           "CommentedBy": "UserName002"
         },
         {"_id": "003",
          "CommentedBy": "UserName003"
         }
    ]
}
Run Code Online (Sandbox Code Playgroud)

使用 mongo 的投影查询提供了一个CommentedBy包含所有名称的列表。我如何使用 mongo 的聚合查询来实现这一点。有没有办法不使用$unwind.

我试过的查询和我得到的结果。

db.getCollection('post').aggregate([
{$project:{"Comments.CommentedBy":"$Comments.CommentedBy.Name"}}
])

{
    "_id" : ObjectId("5b98b4cc3bb8c65aeacabd78"),
    "Comments" : [ 
        {
            "CommentedBy" …
Run Code Online (Sandbox Code Playgroud)

mongodb pymongo mongodb-query aggregation-framework

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

PyMongo 聚合如何获取 executionStats

我正在尝试获取特定 mongo 聚合查询的 executionStats。我运行 db.command 但这并没有给出“执行状态”

这就是我想要做的。 如何使用 db.command 获取 Python Mongo Aggregate 解释?

pymongo 聚合不允许解释选项

python mongodb pymongo aggregation-framework

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

长聚合管道的MongoDB性能改进

我正在尝试提高mongo查询(一页长)的性能,该查询使用各种管道阶段并将数据转换为各种格式。

SAMPLE DATA

https://jsoneditoronline.org/?id=d2075cafc09e4c1eb71d323b81fb474f

QUERY

https://jsoneditoronline.org/?id=6ecf6baac4a247d6952096aa1cc019b3

EXECUTION STATS WITH INDEX ON MULTIPLE FIELD

https://jsoneditoronline.org/?id=a1dd2e4286c14c3e886e120f59a993d5

单个查询的执行时间少于2秒,但是使用以下配置进行负载测试时

记录总数= 20,000并发-50(30分钟)具有3个副本集的M30实例在所有匹配和排序字段上都设置了索引负载测试完成后,没有其他进程/查询在运行。

该查询还有一个版本facet与配合使用groupdb.profile统计信息显示,通过烧瓶服务器运行这些查询时,查询执行大约需要17-30秒。

在涉及复杂查询时,这是mongodb的预期行为吗?

mongodb mongodb-query aggregation-framework

5
推荐指数
0
解决办法
118
查看次数

如何在ace编辑器中只读取多个行

我试图在Ace编辑器中将部分代码设置为只读.

我试过使用JsFiddle中给出的代码

$(function() {
    var editor     = ace.edit("editor1")
        , session  = editor.getSession()
        , Range    = require("ace/range").Range
        , range    = new Range(1, 4, 1, 10)
        , markerId = session.addMarker(range, "readonly-highlight");

    session.setMode("ace/mode/javascript");
    editor.keyBinding.addKeyboardHandler({
        handleKeyboard : function(data, hash, keyString, keyCode, event) {
            if (hash === -1 || (keyCode <= 40 && keyCode >= 37)) return false;

            if (intersects(range)) {
                return {command:"null", passEvent:false};
            }
        }
    });

    before(editor, 'onPaste', preventReadonly);
    before(editor, 'onCut',   preventReadonly);

    range.start  = session.doc.createAnchor(range.start);
    range.end    = session.doc.createAnchor(range.end);
    range.end.$insertRight = true; …
Run Code Online (Sandbox Code Playgroud)

javascript editor ace-editor

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

如何使用 prependpath 在 azure-pipeline 中设置路径

我正在尝试使用前置路径在 Azure 管道中设置路径

  echo '##vso[task.prependpath]$(HOME)/miniconda3/bin'
  echo "New path 1... $PATH"

  ##vso[task.prependpath]($HOME)/miniconda3/bin
  echo "New path 3... $PATH"

  ##vso[task.prependpath]($env.HOME)/miniconda3/bin
  echo "New path 3... $PATH"

  ##vso[task.prependpath]$(env.HOME)/miniconda3/bin
  echo "New path 4... $PATH"

  ##vso[task.prependpath]$(env.home)/miniconda3/bin
  echo "New path 5... $PATH"

  ##vso[task.prependpath]$(home)/miniconda3/bin
  echo "New path 6... $PATH"
Run Code Online (Sandbox Code Playgroud)

这些都没有设置路径,但是在设置路径时export PATH=$HOME/miniconda3/bin:$PATH

如何在 azure-pipeline 中设置PATH变量HOME

在此处输入图片说明

continuous-integration azure azure-devops azure-pipelines

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

如何在 Mongodb 映射中创建对象

我有一个如下所示的文档,我使用 mongo $map 来投影表内的字段并重命名键。$unwind由于某些内部复杂性,我无法使用。

{
"Table":[
    {"Lookup":{
        "CreatedBy":{
            "id": "User001",
            "Name":"UserName"
         }

        }
     }]
}
Run Code Online (Sandbox Code Playgroud)

我期望的输出看起来像这样

{
"Table":[
    {"Lookup":{
        "CreatedBy":"UserName"
        }
     }]
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 mongo $map 来实现它,但不支持它

db.getCollection('TableDoc').aggregate([
        {
        "$project": {
            "Table": {
                "$map": {
                    "input": "$Table",
                    "in": {
                      "Lookup.CreatedAt": "$$this.Lookup.CreatedAt.Name",
                    }
                }               
             }
         }
        }
])
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以在不使用 $unwind 的情况下实现此目的

mongodb pymongo mongodb-query aggregation-framework

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

将数据帧 to_csv 文件缓冲区上传到 Google Cloud Storage 时出现 UnicodeError

 UnicodeEncodeError: \'latin-1\' codec can\'t encode character \'\\u2019\' in position 26612: Body (\'\xe2\x80\x99\') is not valid Latin-1. Use body.encode(\'utf-8\') if you want to send it encoded in UTF-8.\n
Run Code Online (Sandbox Code Playgroud)\n\n

我使用df.to_csv带有编码集的方法创建了一个 CSV 文件。尽管如此,我在将文件上传到 Google Cloud Storage 时收到上述错误。

\n\n
json_data = [\n    {\n      "Critics": "Like many of the landmark films of the 1980s, I had watched Mani Ratnam\\u2019s breakout hit \\u201cMouna Ragam\\u201d at a time when I hadn\\u2019t yet crossed paths with ideas like feminism and gender equality. Though I retained …
Run Code Online (Sandbox Code Playgroud)

python unicode pandas google-cloud-platform

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

Numpy repeat converts `nan` to `str`

This numpy behavior seems a little weird.

>>> type(np.array([1, np.nan]).repeat(2)[2])
<class 'numpy.float64'>
Run Code Online (Sandbox Code Playgroud)

But when I make the first param a string

>>> type(np.array(["a", np.nan]).repeat(2)[2])
<class 'numpy.str_'>
Run Code Online (Sandbox Code Playgroud)

How do I fix it?

python numpy pandas numpy-ndarray

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