标签: pymongo

使用Python使用字符串查询MongoDB for _id的正确方法是什么?

我正在使用pymongo驱动程序.据说,可以使用字符串来查询文档的_id字段,如下所示:

thing = db.things.find_one({'_id':'4ea113d6b684853c8e000001'})
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我究竟做错了什么?

mongodb pymongo

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

如何在python中限制mongo查询

我试图用python从mongodb中检索数据.我的数据库包含大量数据.所以我想在检索时限制数据.我试过了

import datetime
from pymongo import Connection
connection = Connection('localhost',27017)
db = connection['MyWork']


db_data = db.myusers.find().limit(2)
#db_data = db.myusers.find()[0:2]
print db_data
print db_data.count()
print db_data[0]
print db_data[1]
print db_data[2]
Run Code Online (Sandbox Code Playgroud)

但是当我尝试上面时,我得到的文件不止两个.我正在使用pymongo驱动程序.如何限制值

<pymongo.cursor.Cursor object at 0x000000000267D518>
3
{u'age': 24.0, u'_id': ObjectId('552b6e90aad3e2d909d5fb28'), u'place': u'Ravipadu', u'name': u'Shiva'}
{u'age': 28.0, u'_id': ObjectId('552b6eabaad3e2d909d5fb29'), u'place': u'Rajahmundry', u'name': u'Anil'}
{u'age': 30.0, u'_id': ObjectId('552b6ec1aad3e2d909d5fb2a'), u'place': u'Manchili', u'name': u'Kishore'}
Run Code Online (Sandbox Code Playgroud)

python mongodb pymongo

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

如果集合存在且存在为空(如何从集合中删除),如何检查PyMongo?

如果集合存在且存在为空(如何从集合中删除),如何检查PyMongo?我试过像

collection.remove()
Run Code Online (Sandbox Code Playgroud)

要么

collection.remove({})
Run Code Online (Sandbox Code Playgroud)

但它不会删除集合.怎么做 ?

python mongodb pymongo

26
推荐指数
3
解决办法
4万
查看次数

MongoDB python绑定比java慢一个数量级?

我在mongodb用户列表上问了同样的问题:http://groups.google.com/group/mongodb-user/browse_thread/thread/b3470d6a867cd24

我希望这个论坛上有人可能会有一些见解......

我运行了一个简单的实验来比较使用python和java的游标迭代的性能,并发现python实现速度慢了大约10倍.我希望有人可以告诉我这是否有预期的差异,或者我是否在python方面做了一些明显低效的事情.

基准测试很简单:它执行查询,迭代光标,并检查每个文档中的相同字段.在python版本中,我可以每秒检查大约22k个文档.在java版本中,我可以每秒检查大约220k文档.

我已经看到了一些关于python性能的类似问题,我已经接受了建议,并确保我使用的是C扩展:

>>> import pymongo 
>>> pymongo.has_c() 
True 
>>> import bson 
>>> bson.has_c() 
True 
Run Code Online (Sandbox Code Playgroud)

最后,我不认为差异是由于python和java之间的根本区别,至少在我的测试代码级别.例如,如果我将查询的文档存储在python列表中,我可以非常快速地遍历该列表.换句话说,它不是一个低效的python for循环来解释差异.此外,在插入文档时,我获得了与Java相比几乎相同的性能.

以下是有关查询的更多详细信息:

  • python和java实现都在同一个集合上使用相同的查询,并在同一台机器上运行.
  • 该集合包含大约2000万个文档.
  • 查询返回大约200万个文档,即我正在检索大约10%的集合.
  • 每个文档包含三个简单字段:日期和两个字符串.
  • 查询被索引,并且在实际查询中花费的时间对于python和java实现都是可以忽略的.它是考虑运行时的游标迭代.

mongodb pymongo mongodb-java

26
推荐指数
1
解决办法
1591
查看次数

在MongoDB的pymongo中,我如何进行count()?

for post in db.datasets.find({"test_set":"abc"}).sort("abc",pymongo.DESCENDING).skip((page-1)*num).limit(num):
Run Code Online (Sandbox Code Playgroud)

这是我目前的代码.

我如何得到计数()?

database count mongodb pymongo

25
推荐指数
4
解决办法
3万
查看次数

Django的PyMongo vs MongoEngine

对于我的一个项目,我更喜欢使用Django + Mongo.

我为什么要使用MongoEngine,而不仅仅是PyMongo?有什么好处?使用PyMongo查询会产生已经完成对象的结果,不是吗?那么MongoEngine的目的是什么?

python django mongodb pymongo mongoengine

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

从Pymongo结果中删除_id元素

我正在尝试使用MongoDB和Flask(使用pymongo驱动程序)创建Web服务.当然,对数据库的查询返回包含"_id"字段的文档.我不想将其发送给客户端,所以我该如何删除它?

这是一个Flask路线:

@app.route('/theobjects')
def index():
    objects = db.collection.find()
    return str(json.dumps({'results': list(objects)}, 
        default = json_util.default,
        indent = 4))
Run Code Online (Sandbox Code Playgroud)

返回:

{
"results": [
    {
        "whatever": {
            "field1": "value", 
            "field2": "value", 
        }, 
        "whatever2": {
            "field3": "value"
        },
        ...
        "_id": {
            "$oid": "..."
        }, 

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

我以为它是一本字典,我可以在返回之前删除该元素:

del objects['_id']
Run Code Online (Sandbox Code Playgroud)

但是这会返回一个TypeError:

TypeError: 'Cursor' object does not support item deletion
Run Code Online (Sandbox Code Playgroud)

所以它不是字典,而是我必须将每个结果作为字典迭代.所以我试着用这段代码做到这一点:

for object in objects:
    del object['_id']
Run Code Online (Sandbox Code Playgroud)

每个对象字典看起来都是我现在喜欢的方式,但是对象光标是空的.所以我尝试创建一个新的字典,并在从每个字典中删除_id后,添加到Flask将返回的新字典:

new_object = {}
for object in objects:
    for key, item in objects.items():
        if key == '_id':
            del …
Run Code Online (Sandbox Code Playgroud)

python mongodb pymongo

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

如何在PyMongo中使用sql"like"?

如何在PyMongo中使用sql"like"?

>>> db.houses.find().count()
11616
>>> db.houses.find({"hid":u"16999"}).count()
1
>>> db.houses.find({"hid":u"/9/"}).count()
0
Run Code Online (Sandbox Code Playgroud)

文件说,SQL"喜欢"(SELECT * FROM users WHERE name LIKE "%Joe%"MongoDB中)是db.users.find ({name:/Joe/}).

如果直接向cli-client接口mongodb指定查询,那么一切正常,但在pymongo中不起作用.

问题是什么?

谢谢.

python mongodb nosql pymongo

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

一起使用MongoEngine和PyMongo

我想将MongoEngine用于我的下一个项目.现在我想知道我是否也可以在同一个项目中直接使用PyMongo.只是因为我需要一些非常特殊的东西,不能直接通过mongoengine支持.

有没有怀疑这会起作用,或者我不应该这样做!?

mongodb pymongo mongoengine

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

是否可以使用pymongo将变量用于集合名称?

是否可以使用pymongo将变量用于集合名称?例如:

col = 'my_collection'
db.col.update()
Run Code Online (Sandbox Code Playgroud)

python mongodb pymongo

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

标签 统计

mongodb ×10

pymongo ×10

python ×6

mongoengine ×2

count ×1

database ×1

django ×1

mongodb-java ×1

nosql ×1