小编Phi*_*ien的帖子

MongoDB {aggregation $ match} vs {find} speed

我有一个包含数百万行的mongoDB集合,我正在尝试优化我的查询.我目前正在使用聚合框架来检索数据并根据需要对它们进行分组.我的典型聚合查询类似于:$match > $group > $ group > $project

但是,我注意到最后的部分只花了几毫秒,开始是最慢的.

我尝试仅使用$ match过滤器执行查询,然后使用collection.find执行相同的查询.聚合查询需要大约80毫秒,而查询查询需要0或1毫秒.

我几乎每个字段都有索引,所以我想这不是问题.什么可能出错?或者它只是聚合框架的"正常"缺点?

我可以使用查找查询而不是聚合查询,但是我必须在请求之后执行大量处理,并且这个过程可以快速完成$group等等,所以我宁愿保留聚合框架.

谢谢,

编辑:

这是我的标准:

{
    "action" : "click",
    "timestamp" : {
            "$gt" : ISODate("2015-01-01T00:00:00Z"),
            "$lt" : ISODate("2015-02-011T00:00:00Z")
    },
    "itemId" : "5"
}
Run Code Online (Sandbox Code Playgroud)

mongodb aggregation-framework

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

让Spark,Python和MongoDB协同工作

我很难让这些组件正确编织在一起.我已经安装了Spark并成功运行,我可以在本地运行作业,独立运行,也可以通过YARN运行.我已经遵循了这里这里建议的步骤(据我所知)

我正在研究Ubuntu和我拥有的各种组件版本

我在执行各种步骤时遇到了一些困难,例如哪些罐子添加到哪条路径,所以我添加的是

  • /usr/local/share/hadoop-2.6.1/share/hadoop/mapreduce 我添加 mongo-hadoop-core-1.5.0-SNAPSHOT.jar
  • 以下环境变量
    • export HADOOP_HOME="/usr/local/share/hadoop-2.6.1"
    • export PATH=$PATH:$HADOOP_HOME/bin
    • export SPARK_HOME="/usr/local/share/spark-1.5.1-bin-hadoop2.6"
    • export PYTHONPATH="/usr/local/share/mongo-hadoop/spark/src/main/python"
    • export PATH=$PATH:$SPARK_HOME/bin

我的Python程序是基本的

from pyspark import SparkContext, SparkConf
import pymongo_spark
pymongo_spark.activate()

def main():
    conf = SparkConf().setAppName("pyspark test")
    sc = SparkContext(conf=conf)
    rdd = sc.mongoRDD(
        'mongodb://username:password@localhost:27017/mydb.mycollection')

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

我正在使用该命令运行它

$SPARK_HOME/bin/spark-submit --driver-class-path /usr/local/share/mongo-hadoop/spark/build/libs/ --master local[4] ~/sparkPythonExample/SparkPythonExample.py
Run Code Online (Sandbox Code Playgroud)

我得到了以下输出结果

Traceback (most recent call last):
  File "/home/me/sparkPythonExample/SparkPythonExample.py", line 24, in …
Run Code Online (Sandbox Code Playgroud)

python hadoop mongodb pymongo apache-spark

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

使用Mongo集合中的二进制数据作为图像源

我有一个快速应用程序,使用Jade作为视图引擎将数据存储在mongo中.我有一个简单的路线,可以获取特定集合中的文档,每个文档对应一个产品.该图像是base64编码的.当我尝试渲染为图像虽然它不起作用

我的路线是

exports.index = function(req, res){
   mongo.getProducts(function(data) {
      res.render('consumer/index', {user: req.session.user, products: data});
   });
};
Run Code Online (Sandbox Code Playgroud)

调用的函数是

exports.getProducts = function(callback) {

   Product.find().exec(function(err, products){
      return callback(products);
   });
};
Run Code Online (Sandbox Code Playgroud)

然后我的Jade文件有以下代码

each val in products
  img(src="data:image/png;base64,'+#{val.image.data}+'", alt='Image', style="width: 20px; height: 20px")
Run Code Online (Sandbox Code Playgroud)

直接在Mongo(通过robomongo)查看文档,我得到了这个

在此输入图像描述

在此输入图像描述

我不知道我缺少什么,因为在另一个文件中我使用jQuery数据表来显示文档,并且相同的方法正确呈现图像,这里是数据表代码的片段

"aoColumns": [
          {"mData": "name"},
          {"mData": "price"},
          {"mData": "category"},
          {"mData": "description"},
          {"mData": "image.data", "mRender": function ( data, type, full ) {
            return '<img src="data:image/png;base64,'+data+'", style="width: 20px; height: 20px"></>'}},
          {"mData": "promoted"},
          {"mData": null}
        ]
Run Code Online (Sandbox Code Playgroud)

node.js node-mongodb-native pug

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

为什么在Mongo中使用ElasticSearch?

我最近阅读了一些关于mongodb for storage和elasticsearch for indexing/search 的组合的文章.我觉得我错过了一些东西.你为什么要走这条路,而不是只使用mongo来索引数据?elasticsearch带来了哪些好处,是否值得增加复杂性?

mongodb elasticsearch

17
推荐指数
2
解决办法
6584
查看次数

从节点中已解析的csv文件构建对象数组

我有多个表单的csv文件

  • model1A
  • model1B
  • model2A
  • model2B

其中每个csv是一个数组即 model1A = [1, 1, 1]

我想解析这些csv并创建一个包含所有这些模型的数组,其中数组中的每个元素都是对应于一个特定模型的对象,即

finalArray = [ 
  { 
    "model" :   "model1",
    "A"     :   [1, 1, 1],
    "B"     :   [2, 2, 2]
  },
  { 
    "model" :   "model2",
    "A"     :   [3, 3, 3],
    "B"     :   [4, 4, 4]
  }
]
Run Code Online (Sandbox Code Playgroud)

我到目前为止的代码是

var csv = require('csv');
var fs = require('fs');
var parser = csv.parse();
var util = require('util');
var junk = require('junk');
var _ = require('lodash');
var models = [];


fs.readdir(__dirname+'/data', function(err, files) {
    var …
Run Code Online (Sandbox Code Playgroud)

javascript csv arrays object node.js

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

PyTorch Binary分类-相同的网络结构,“更简单”的数据,但性能较差?

为了掌握PyTorch(以及一般的深度学习),我首先研究了一些基本的分类示例。其中一个示例是对使用sklearn创建的非线性数据集进行分类(完整代码可在此处作为笔记本查看

n_pts = 500
X, y = datasets.make_circles(n_samples=n_pts, random_state=123, noise=0.1, factor=0.2)
x_data = torch.FloatTensor(X)
y_data = torch.FloatTensor(y.reshape(500, 1))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

然后使用相当基本的神经网络将其准确分类

class Model(nn.Module):
    def __init__(self, input_size, H1, output_size):
        super().__init__()
        self.linear = nn.Linear(input_size, H1)
        self.linear2 = nn.Linear(H1, output_size)

    def forward(self, x):
        x = torch.sigmoid(self.linear(x))
        x = torch.sigmoid(self.linear2(x))
        return x

    def predict(self, x):
        pred = self.forward(x)
        if pred >= 0.5:
            return 1
        else:
            return 0
Run Code Online (Sandbox Code Playgroud)

当我对健康数据感兴趣时,我决定尝试使用相同的网络结构对一些基本的现实世界数据集进行分类。我从这里获取了一名患者的心率数据,并对其进行了更改,以便所有> 91的值都被标记为异常(例如a 1,所有<= 91的值都标记为a 0)。这是完全任意的,但是我只是想看看分类是如何工作的。此示例的完整笔记本在这里

在此处输入图片说明

对我来说不直观的是,为什么第一个示例在1,000个历元后损失0.0016,而第二个示例在10,000个历元后却损失0.4296 …

python artificial-intelligence machine-learning deep-learning pytorch

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

按钮点击Jade

点击它时我很难获得一个执行javascript函数的按钮,下面是我的jade文件

extends layout
block content
  - var something = function() {
  -   console.log('something')
  - }

  button(onclick='#{something()}') Click
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

html javascript express pug

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

从多个行中的Pandas Dataframe单元格中拆分嵌套数组值

我有一个以下形式的Pandas DataFrame

在此输入图像描述

每个ID每年有一行(2008年 - 2015年).对于列Max Temp,Min TempRain每个单元格包含对应于该年中某一天的值的数组,即对于上面的帧

  • frame3.iloc[0]['Max Temp'][0] 是2011年1月1日的价值
  • frame3.iloc[0]['Max Temp'][364] 是2011年12月31日的价值.

我知道这个结构很糟糕,但这是我必须处理的数据.它以这种方式存储在MongoDB中(其中一行等同于Mongo中的文档).

我想拆分这些嵌套数组,以便每年每个ID不是一行,而是每天每个ID有一行.但是,在拆分数组时,我还想根据当前数组索引创建一个新列来捕获一年中的某一天.然后我会使用这一天,加上Year列来创建DatetimeIndex

在此输入图像描述

我在这里搜索了相关的答案,但只找到了这个并没有真正帮助我的答案.

python numpy dataframe pandas

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

pm2下的自定义日志记录

我在我写的节点应用程序中有一些有用的日志记录 console.log

node server.js >> /var/log/nodeserver.log 2>&1
Run Code Online (Sandbox Code Playgroud)

但是,在pm2下尝试相同时:

pm2 start server.js >> /var/log/pm2server.log 2>&1
Run Code Online (Sandbox Code Playgroud)

日志文件仅显示pm2启动信息

应用程序是否可以使用pm2进行日志记录?在他们的页面上,他们讨论日志记录,并显示带有文本的图像"log message from echo.js",但我没有看到将自定义信息输入pm2日志.

logging node.js pm2

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

从makefile激活Anaconda Python环境

我想使用makefile来使用makefile和anaconda/miniconda构建我的项目环境,所以我应该能够克隆repo并简单地运行make myproject

myproject: build

build:
  @printf "\nBuilding Python Environment\n"
  @conda env create --quiet --force --file environment.yml
  @source /home/vagrant/miniconda/bin/activate myproject
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试这个,我会收到以下错误

make:source:找不到命令

make:***[来源]错误127

我已经搜索了一个解决方案,但是[这个问题/答案(如何在Makefile中提供脚本?)表明我无法source在makefile中使用.

然而,这个答案提出了一个解决方案(并收到了几个赞成票),但这对我来说也不起作用

(\
source/home/vagrant/miniconda/bin/activate myproject; \

)

/ bin/sh:2:source:not found

make:***[来源]错误127

我还尝试将source activate步骤移动到单独的bash脚本,并从makefile执行该脚本.这不起作用,我假设出于类似的原因,即我source在shell中运行.

我应该补充说,如果我source activate myproject从终端运行,它可以正常工作.

python bash makefile virtualenv anaconda

10
推荐指数
2
解决办法
6241
查看次数