Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python 2.7读取和更新mongodb集合?_Mongodb_Python 2.7_Amazon S3 - Fatal编程技术网

如何使用python 2.7读取和更新mongodb集合?

如何使用python 2.7读取和更新mongodb集合?,mongodb,python-2.7,amazon-s3,Mongodb,Python 2.7,Amazon S3,我正在尝试连接到mongo db并更新集合,我的用例是:- 使用特定的runid/batchid搜索集合,如果找到,则为该文档插入一个新列“Status”和value=“complete”。 以下是一组运行ID: 144019800231859 144019800231659 144222840203400 144019800231559 144019800231759 144019800231459 144019080231459 144223560212920 144222120225005

我正在尝试连接到mongo db并更新集合,我的用例是:- 使用特定的runid/batchid搜索集合,如果找到,则为该文档插入一个新列“Status”和value=“complete”。 以下是一组运行ID:

144019800231859
144019800231659
144222840203400
144019800231559
144019800231759
144019800231459
144019080231459
144223560212920
144222120225005
我的收藏是这样的:

{
"_id" : ObjectId("537d171c2273d16335000001"),
"file" : "/data/raw/xact/logs/edw/*/xxxx8835/ex14052114.log.gz",
"created_at" : 1400706844,
"batch_id" : NumberLong(1400706390198590000),
"run_id" : NumberLong(140070639019859)
}
因此,如果我在集合中的列表中找到一个run_id,那么我想在集合中再添加一列

   {
    "_id" : ObjectId("537d171c2273d16335000001"),
    "file" : "/data/raw/xact/logs/edw/*/qaz02htp8835/noarchive/ex14052114.log.gz",
    "created_at" : 1400706844,
    "batch_id" : NumberLong(1400706390198590000),
    "run_id" : NumberLong(140070639019859)
    “Status” : “complete" 
   }
谁能帮我做到这一点

这是我到目前为止写的东西

from pymongo import MongoClient # Comes with pymongo
client = MongoClient('mongodb://user:hadoop_qa@localhost.corp.homestore.net:33307/')
db = client['jobs_qa']
collection = db['export_batch_tracker']
print collection
注:

循环给定id,并在运行id匹配的位置设置status=Complete

您可以对批次id执行相同的操作

代码:


将显示错误消息/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7/Users//GitRepos/Log Ship/Log Ship/Log Ship/Log Ship\u run.py回溯最近的调用最后一次:File/Users/GitRepos/Log Ship/Log Ship\u run.py,第33行,在集合中。更新{batch\u id:ids},{$set:{Status:Complete}文件/Users/Library/Python/2.7/lib/Python/site-packages/pymongo/collection.py,第1956行,在使用self更新时。_socket_for_写为sock_info:FileFile/Users/Library/Python/Python/site-packages/pymongo/network.py,第54行,在命令助手中。_check_命令_响应响应响应_doc,msg,允许的错误文件/Users/Library/Pyth在/2.7/lib/python/site-packages/pymongo/helpers.py上,第188行,在“检查”命令中,在响应raise OPERATIONFAILUREMMSG%errmsg,code,response pymongo.errors.operation失败:命令子['authenticate',1',user',u'user',u'user',nonce',u'f1cf8ee7a00896df'key',u'1cd20f7606e0771d21a1330053be710']在命名空间管理上。$cmd失败:身份验证fails@Guddi您显示的给定消息中的用户名和密码错误。请尝试使用cmd promptFile/Users/sshirke/Library/Python/2.7/lib/Python/site-packages/pymongo/helpers.py,第188行,在检查命令\u response raise OperationFailuremsg%errmsg,code,response pymongo.errors.operation中进行连接onFailure:namespace admin上的命令SON['authenticate',1',user',u'user',nonce',u'ed21c07e7275b032',key',u'419b85a846bd341f98f74e58c1ff793c'.$cmd失败:身份验证失败
from pymongo import MongoClient # Comes with pymongo
client = MongoClient('mongodb://user:hadoop_qa@localhost.corp.homestore.net:33307/')
db = client['jobs_qa']
collection = db['export_batch_tracker']
run_ids=[144019800231859,144019800231659,144222840203400,144019800231559,144019800231759,144019800231459,144019080231459,144223560212920,144222120225005]
for ids in run_ids:
    collection.update({"run_id":ids},{"$set":{"Status":"Complete"}})