遵循PyMongo 教程 ,在集合上调用insert_one方法时出现错误。 In [1]: import pymongo In [2]: from pymongo import MongoClient In [3]: client = MongoClient() In [4]: db = client.new_db In [5]: db Out[5]: Database(MongoClient('localhost', 27017), u'new_db') In [6]: posts = db.posts In [7]: posts.insert_one({'a':1}) ————————————————————————— TypeError Traceback (most recent call last) <ipython-input-7-2271c01f9a85> in <module>() —-> 1 posts.insert_one({'a':1}) C:\Anaconda\lib\site-packages\pymongo-2.8-py2.7-win32.egg\pymongo\collection.py in __call__(self, *a […]
在这里理解正确的方法有些麻烦。 我有一个与三个成员(标准的主从奴隶)mongodb副本集的连接。 当主人保持一致时,一切工作正常。 pymongo.Connection(['host1:27017','host2:27018','host3:27019']).database_test 出于某种原因,当副本设置主要步骤closures时,这会开始抛出一个autoreconnectexception, 即使在select了新的主节点后也不会消失。 现在我意识到,这个例外需要被抓住和处理,很可能等待新的小学被选举。 我所遇到的问题似乎是,一旦select了新的小学,它根本就不在乎。 这个“主人已经改变”的例外不断涌现。 用__dict__打印连接显示所有三个主机。 我试过把replicaset kwarg传递给连接,但是这是一个意外的论点。 这种联系是不是有理由不开始质疑新的小学呢? 编辑: 显然现在在部署服务器上也出现了同样的问题。 如果主服务器发生更改,autoreconnectexception将被抛出,即使在select了新的主服务器之后也不会消失。 Pymongo是2.2版本和mongodb版本2.0.2。 改变在pymongo代码(mongouri与主机列表)中定义连接的方式不起作用。 恢复服务的唯一方法是rs.stepDown()其他主机,直到原始主服务器再次成为主服务器。
我可以简单地通过连接到MongoDB服务器创build一个新的数据库,还是有另一种方法来使用Python创build它? 如果是的话,这是怎么做的?
我使用pymongo,我无法弄清楚如何执行“show dbs”的mongodb交互式shell。
我有一个文件: { 'profile_set' : [ { 'name' : 'nick', 'options' : 0 }, { 'name' : 'joe', 'options' : 2 }, { 'name' : 'burt', 'options' : 1 } ] } 如果名称不存在(无论选项是否存在),还想向profile_set集添加一个新文档。 所以在这个例子中,如果我试图添加: {'name' : 'matt', 'options' : 0} 它应该添加它,但添加 {'name' : 'nick', 'options' : 2} 应该什么都不做,因为即使option不同,文档已经以名称nick存在。 蒙戈似乎与整个元素相匹配,我最终检查是否是相同的,我结束了 profile_set containing [{'name' : 'nick', 'options' : […]
我从Python运行MongoDB的更新。 我有这条线: self.word_counts[source].update({'date':posttime},{"$inc" : words},{'upsert':True}) 但它会抛出这个错误: raise TypeError("upsert must be an instance of bool") 但是True看起来就像是我的一个布尔实例! 我应该如何正确地写这个更新?
我有一个这种forms的mongodb集合: {id=ObjectId(….),key={dictionary of values}} where dictionary of values is {'a':'1','b':'2'…..} 让数值字典为'd' 。 我需要在'd'更新密钥的值。 即我想改变'a':'1'到'a':'2'我怎样才能在pymongo? 代码是这样的: productData is a collection in mongoDB for p in productData.find(): for k,v in p.iteritems(): value=v['a'] value=value+1 v['a']=value 现在反映productData中的新值。 这是我试过的,它引入了一个新的键值对,而不是更新 for p in productData.find(): for k,v in p.iteritems(): value=v['a'] value=value+1 v['a']=value productData.update({'_id':mongoId},{"$set":{'d.a':'100'}},upsert=False)
我不明白ensure_index中create_index和ensure_index的区别。 在MongoDB索引页面上 ,它说 你可以通过调用ensureIndex()来创build索引 但是在pymongo中有两个不同的命令create_index和ensure_index ,并且create index的文档有: 与create_index()不同,它试图无条件地创build一个索引,ensure_index()利用驱动程序中的一些caching,只尝试创build可能不存在的索引。 当PyMongo创build(或确保)索引时,“记住”ttl秒。 在此限制内重复调用ensure_index()将是轻量级的 – 它们不会尝试实际创build索引。 我正确的理解, ensure_index将创build一个永久性的索引,还是我需要使用create_index呢?
我需要分析MongoDB中的大量数据。 我如何将这些数据导入pandas? 我是pandas和numpy的新手。 编辑:mongodb集合包含标记date和时间的传感器值。 传感器值是浮点数据types。 样本数据: { "_cls" : "SensorReport", "_id" : ObjectId("515a963b78f6a035d9fa531b"), "_types" : [ "SensorReport" ], "Readings" : [ { "a" : 0.958069536790466, "_types" : [ "Reading" ], "ReadingUpdatedDate" : ISODate("2013-04-02T08:26:35.297Z"), "b" : 6.296118156595, "_cls" : "Reading" }, { "a" : 0.95574014778624, "_types" : [ "Reading" ], "ReadingUpdatedDate" : ISODate("2013-04-02T08:27:09.963Z"), "b" : 6.29651468650064, […]
我使用SQL“Like”运算符使用pymongo, db.test.find({'c':{'$regex':'ttt'}}) 但是我怎样才能使用'不喜欢'运营商? 我试过了 db.test.find({'c':{'$not':{'$regex':'ttt'}})