小编Mar*_*oni的帖子

MongoDB - 过滤结果集中内部数组的内容

我是MongoDB的新手,我不知道如何解决下一个问题:

我有这样的文档集合:

{
 "URL": "www.stackoverflow.com",
 "TAGS": [
         {"NAME": "question", "VOTES": 3},
         {"NAME": "answer", "VOTES": 5},
         {"NAME": "problem", "VOTES": 2}
         ]
}
Run Code Online (Sandbox Code Playgroud)

首先,我想要所有包含列表中所有标签的Urls.我通过查询解决了这个问题:

db.links.find( { "Tags.Name" : { $all: ["question","answers"] } } );
Run Code Online (Sandbox Code Playgroud)

但是这个查询返回了整个正确的文档,只有正确的文档,只有我要求的标记.

我正在寻找的结果是:

{
 "URL": "www.stackoverflow.com",
 "TAGS": [{"NAME": "question", "VOTES": 3},
         {"NAME": "answer", "VOTES": 5}]
}
Run Code Online (Sandbox Code Playgroud)

并不是:

{
 "URL": "www.stackoverflow.com",
 "TAGS": [{"NAME": "question", "VOTES": 3},
         {"NAME": "answer", "VOTES": 5},
         {"NAME": "problem", "VOTES": 2}]
}
Run Code Online (Sandbox Code Playgroud)

因为我只要求标签["问题","答案"].

我想过使用MapReduce或解析结果集,但我不知道它是否是解决问题的正确方法.也许有一个内置函数可以更有效地解决它.

谢谢!

filter mongodb

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

Celery任务未被发送到Sentry的未被捕获的例外情况

我目前正在基于Django的项目中处理Celery任务.我们将raven配置为将所有未捕获的异常和日志消息发送到Sentry,如文档中所述.

一切都很好,除了芹菜任务中未被捕获的异常.例如,如果我运行此任务:

@app.task
def test_logging():
    log.error('Testing logging inside a task')
    raise IndexError('Testing exception inside a task')
Run Code Online (Sandbox Code Playgroud)

我只在Sentry中看到log.error(...)但未被IndexError捕获的异常.我尝试try-exceptlog.exception(...)内部使用一个块来处理异常并且它确实有效,但我认为它不可扩展来捕获这样的所有异常.

所以,问题只是未被捕获的异常,以某种方式处理不当.

这些是我目前的包版本:

celery (3.1.17)
raven (5.1.1)
Django (1.7.1)
Run Code Online (Sandbox Code Playgroud)

你能帮助我朝某个方向前进吗?

谢谢你的时间!

django logging exception celery sentry

11
推荐指数
2
解决办法
2382
查看次数

Python + MongoDB - 游标迭代太慢了

我实际上是在搜索引擎项目中工作.
我们正在使用python + mongoDb.
我遇到以下问题:

在对mongo db执行find()命令后,我有一个pymongo游标.
pymongo游标有大约20k的结果.

我注意到,与正常迭代相比,pymongo游标上的迭代非常慢,例如相同大小的列表.

我做了一点基准测试:

-iteration在20k字符串列表中:0.001492秒
- 在pymongo光标上获得20k结果:1.445343秒

差别真的很大.这个数量的结果可能不是问题,但如果我有数百万的结果,那么时间将是不可接受的.

有没有人知道为什么pymongo游标太慢而不能迭代?
我知道如何在更短的时间内迭代光标?

一些额外的信息:

  • Python v2.6
  • PyMongo v1.9
  • MongoDB v1.6 32位

python iteration performance cursor mongodb

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

Django - 用于识别一个对象的URL设计和最佳实践

我实际上在django项目中工作,我不确定访问一个特定对象页面的URL的最佳格式.

我在想这些替代方案:

1) Using the autoincremental ID => .com/object/15
Run Code Online (Sandbox Code Playgroud)

这是最简单和众所周知的方法."id_object"是数据库引擎在保存对象时生成的自动增量ID.我以这种方式找到的问题是URL是简单的可迭代的.因此,我们可以通过增加URL中的ID来创建一个简单的脚本并访问所有页面.也许是一个安全问题.

2) Using a <hash_id> => .com/object/c30204225d8311e185c3002219f52617
Run Code Online (Sandbox Code Playgroud)

"hash_id"应该是一些字母数字字符串值,例如使用uuid函数生成.这是一个好主意,因为它不可迭代.但生成"随机"唯一ID可能会导致一些问题.

3) Using a Slug => .com/object/some-slug-generated-with-the-object
Run Code Online (Sandbox Code Playgroud)

Django为模型提供了一个"slug"字段,它可用于识别URL中的对象.我在这种情况下发现的问题是slug可能会在时间上发生变化,从而产生损坏的URL.如果某些搜索引擎(如Google)已将此网址编入索引,则可能会将用户引导至"未找到"网页,我们的网页排名可能会降低.冻结弹头可以解决问题.我的意思是,仅在"添加"操作中保存slug,而不是在"Update"操作中保存.但是slu the现在可以代表旧的或不正确的东西.

所有选项都有优点和缺点.可能会使用它们的某些组合可以解决一些问题.你觉得怎么样?

django url identifier

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

推荐托管PostGIS应用程序

我开发了一个PHP + PostGIS应用程序,我需要在某个地方托管它.任何人都可以推荐我一个虚拟邮件Postgres + PostGIS数据库的网站托管?我找到了一些主持应用程序的地方,但我想了解一下你的经历.非常感谢!

php postgresql hosting postgis

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