Pymongo API TypeError。不可粉碎的数据
我正在为我的软件编写API,以便更容易访问MongoDB. 我有这条线: def update(self, recid): self.collection.find_and_modify(query={"recid":recid}, update={{ "$set": {"creation_date":str( datetime.now() ) }}} ) 投掷TypeError: Unhashable type: 'dict'. 此功能仅是为了找到与参数匹配的文档并更新其creation_date字段. 为什么发生此错误? 解决方案 这很简单,您添加了额外的/冗余卷发括号,请尝试以下操作: self.collection.find_and_modify(query={"recid":recid}, update={"$set": {"creation_da
0 2024-03-01
编程技术问答社区
让Spark、Python和MongoDB一起工作
我很难使这些组件正确编织在一起.我已经快速安装并成功地工作了,我可以在本地,独立的工作以及通过纱线运行作业.我已经遵循了建议的步骤(据我所知)在这里 /p> 我正在研究Ubuntu,并且我拥有的各种组件版本 spark spark-1.5.1 bin-hadoop2.6 hadoop hadoop-2.6.1 mongo 2.6.10 mongo-hadoop Connector 从 https:https://github. com/mongodb/mongo-hadoop.git python 2.7.10 我遵循各种步骤,例如要添加哪个路径,所以我添加的是 在/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-
0 2024-02-29
编程技术问答社区
pymongo-无法连接到运行在EC2上的mongodb
我正在连接到EC2上的MongoDB服务器. Mongo收集需要认证才能连接. 我尝试了所有内容,但我遇到了以下错误,似乎无法纠正它. from pymongo import MongoClient mongo_username = "username" mongo_password = "password" ssh_user = "user" ssh_address = "ec2-**********.amazonaws.com" ssh_port = 22 private_key = "path/to/key/mykey.pem" def connect_to_mongo(): try: client = MongoClient("mongodb://"+mongo_username+":"+mongo_password+"@" + ssh_address, ssl = True, ssl_keyfile = private_key)
0 2024-01-26
编程技术问答社区
使用Pymongo从Windows连接到AWS实例上的MongoDB
在这一行中反复抛出错误: client = MongoClient('ec2-12-345-67-89.us-east-2.compute.amazonaws.com', 27017, ssl=True, ssl_keyfile='C:\\mongo.pem') (出于明显原因而更改路径和实例名称) 我的AWS安全组允许Mongo的端口(27017).首先,我只允许我的IP,现在我通过该端口允许全部.我已经尝试使用" mongodb://"之前的连接字符串并删除SSL参数(我很确定我不需要它). 错误Intellij不断抛弃我是: pymongo.errors.ConnectionFailure: [WinError 10061] No connection could be made because the target machine actively refused it 如果我将脚本传输到AWS实例并用" Local -H
2 2024-01-26
编程技术问答社区
用pymongo连接到aws时出现服务器选择超时错误
我试图连接到使用密钥文件在AWS实例上托管的MongoDB.我能够在没有问题的情况下将SSH进入实例并连接到数据库.当我尝试使用Pymongo从远程位置连接到数据库时,我会收到此错误: ServerSelectionTimeoutError: SSL handshake failed: EOF occurred in violation of protocol 端口27017开放,源设置为0.0.0.0/0. from pymongo import MongoClient client = MongoClient('mongodb://ec2-123-45-678-910.compute-1.amazonaws.com', 27017, ssl=True, ssl_keyfile='/path_to/mykey.pem') db = clie
4 2024-01-25
编程技术问答社区
来自远程机器的Pymongo连接超时
我有一个Bitnami的含义堆栈,在AWS EC2上运行.我正在尝试使用Pymongo从远程计算机连接. from pymongo import MongoClient conn = MongoClient('mongodb://username:password@ec2blah.us-east-1.compute.amazonaws.com:27017/dbname') ,但我一直在pymongo.errors.ConnectionFailure: timed out 的线路上遇到错误 我已经编辑了/opt/bitnami/mongodb/mongodb.conf据说允许通过评论bind_ip = 127.0.0.1和未注册bind_ip = 0.0.0.0以及所有评论/删除这些行的排列. 我已经在网络上浏览了大约90分钟,现在尝试了不同的事情,但是没有运气! 解决方案 在MongoDB服务器上,进行端口连接测试,并确保DB服务运行良好.如果没有,请开始服务
6 2024-01-24
编程技术问答社区
从Pymongo查询中获取字符串阵列
我需要从字段" colname"中获得一个数组.我无法返回光标,只是值的数组. 有没有办法查询此数组而不必循环光标?我觉得这是浪费处理资源. 现在我正在这样做: from pymongo import MongoClient client = MongoClient('mongodb://localhost:27017/') headers = client['headers'] entomo = headers.entomo entomo_data = entomo.find() entomo_array = [] for data in entomo_data: entomo_array.append(data['colname']) 然后我返回entomo_array. 解决方案 如果" colname"字段具有不同的值,或者如果您不关心重复值,则可以使用不同的函数.对于您的示例: entomo_array = entomo.fin
2 2024-01-20
编程技术问答社区
PyMongo-如何查询对象中的属性数量
我需要从看起来像这样的数百个文档中检索数值数据: { "_id": "123", "Notes": { "1222": "Something is here" }, "BehavioralData": { "Folder1": { "Sex": "Male", "Age": "22", "Date": "", "ResearchGroup": "", "Institution": "University of Manitoba" }, "MoCA": { "Visual-Executive": "", "Naming": "NameHere", "Attention": "", "Language": "", "Abstraction": "", "Delayed Recall": "", "
2 2024-01-20
编程技术问答社区
如何设置一个字符串字段不等于空字符串 MongoDB的聚合管道
如何设置某个字段不能是一个空字符串. 当我设置friendsArray.lastMessage字符串字段为空时,它给了我我想要的结果,即: matches = db.user_relations.aggregate( [ {"$match": {"userId": id}}, {"$unwind": {"path": "$friendsArray"}}, {"$sort": {"friendsArray.lastTimestamp": -1}}, {"$match": {"friendsArray.lastMessage": ""}}, {"$limit": 6}, {"$replaceRoot": {"newRoot": "$friendsArray"}}, { "$
16 2024-01-20
编程技术问答社区
用一个嵌套字段的值更新字段
我知道我可以在更新中使用管道聚合器来更新一个值的字段,并从另一个字段中使用该值.但是,我的问题是根据嵌套字段的值更新字段值时.更新的结果始终将新字段与方括号发布.我不想要括号/数组,我只希望它是一个值.请参阅下面的代码 db={ "players": [ { "_id": ObjectId("5fba17c1c4566e57fafdcd7e"), "username": "moshe", "health": 0, "maxHealth": 200, "Chapters": [ {"Cat A": 25, "Cat B": 100, "Cat C": 125}] } ] } 这是我在下面应用的查询 db.players.update( {username: "moshe"}, [{"$set": {"health": "$Chapters.Cat A"}}] ) 结果产生 [{"Chapters": [ {"Cat A": 25, "Cat
2 2024-01-20
编程技术问答社区
在MongoDB中,如何将数组字段的元素改为具有单一属性的dict的值
我需要一种方法来将数组字段的元素更改为具有单个属性的dict的值.我不必将结果写回我的桌子.我只需要以这种方式阅读. 我的桌子有这样的行: {a: 1, b:[ {...}, ..., {...} ], c: 2} 我需要一个查询,以返回这样重写的每一行: {a: 1, b: [ {foo: { ... }}, ..., {foo: {...}} ], c: 2} 换句话说,b的每个元素都变成一个具有单个属性的dict,foo. 这感觉就像是$project或$replaceRoot或$set的工作. 我在Ubuntu 18.04上使用MongoDB 4.2.2和Pymongo 3.10.1. 解决方案 您可以使用聚合来完成: db.collection.aggregate([{$addFields : {b : { $map: { input: '$b', in: {foo : '$$this'} } }}}]) 测试: ref:
0 2024-01-20
编程技术问答社区
带有字符串时间戳的平均聚合
我在数据库中的记录如下: { "_id" : ObjectId("592d4f43d69b643ac0cb9149"), "timestamp" : "2017-03-01 17:09:00", "Technique-Meteo_Direction moyenne du vent_Mean value wind direction[]" : 0.0, "Technique-Meteo_Précipitations_Precipitation status[]" : 0.0, "Technique-Meteo_Direction du vent_Wind direction[]" : 0.0 } { "_id" : ObjectId("592d3a6cd69b643ac0cae395"), "timestamp" : "2017-01-30 09:31:00", "Technique-Electrique_Prises
0 2024-01-20
编程技术问答社区
如何使用$set和圆点符号使用相应的旧元素更新内嵌数组元素?
我在mongodb中有以下文档: from pymongo import MongoClient client = MongoClient(host='my_host', port=27017) database = client.forecast collection = database.regions collection.delete_many({}) regions = [ { 'id': 'DE', 'sites': [ { 'name': 'paper_factory', 'energy_consumption': 1000 }, { 'name': 'chair_factory', 'energy_consumption': 20
2 2024-01-20
编程技术问答社区
从mongodb集合中的每个字段获取不同的值
如何使用单个查询获得MongoDB集合中所有字段的不同值. { "_id": "1", "Gender": "male", "car": "bmw" , "house":"2bhk" , "married_to": "kalpu"}, { "_id": "2", "Gender": "female", "car": nan , "house":"3bhk", "married_to": "kalpu"}, { "_id": "3", "Gender": "female", "car": "audi", "house":"1bhk", "married_to": "deepa"}, 这是一个示例,其中几个字段在我的实际集合中,每个文档至少有50个字段.那么,如何有效地查询将返回每个字段中的唯一值?预先感谢您的帮助. 回答预期: 对于每个字段, Gender:"male", "female" car :"bmw", "audi",..... hou
0 2024-01-20
编程技术问答社区
Pymongo聚合-传递python列表进行聚合
这是我尝试根据时间戳执行聚合(日常)的尝试,如果所有元素都在查询内进行了硬编码. pipe = [ { "$match": { "cid": ObjectId("57fe39972b8dbc1387b20913") } }, { "$project": { "animal_dog": "$animal.dog", "animal_dog_tail": "$animal.dog.tail", "animal_cat": "$animal.cat", "tree": "$fruits", "day": {"$substr": ["$timestamp", 0, 10]} }}, { "$group": { "_id" : "$day", "animal_dog" : {"$sum": "$a
4 2024-01-20
编程技术问答社区
Django pymongo搜索、排序、限制内部数组并计数
我正在与MongoDB一起学习Django,并有一个搜索搜索.这是集合中的示例文档: { "_id": { "$oid": "62615907568ddfca4fef3a25" }, "word": 'entropy, "count": 4, "occurrence": [ {"book": "62615907568ddfca4fef3a23", "year": 1942, "sentence": 0 }, {"book": "62615907568ddfca4fef3a23", "year": 1942, "sentence": 5 }, {"book": "62615907568ddfca4fef3a75", "year": 1928, "sentence": 0 }, {"book": "62615907568ddfca4fef3a90", "year": 1
2 2024-01-20
编程技术问答社区
MongoDB聚合获取上一个时间戳的多个文档的值
这是我原始帖子上的一个后续问题:我的远足小径收藏看起来像这样: 根据用户设置的评论,每条路线可能多次在同一日期可用. { "_id": .., "trailName": "Trail1" "update": ISODate("2023-07-30T08:00:00Z"), "user": "Tom", "comment": "xy" }, { "_id": .., "trailName": "Trail1" "update": ISODate("2023-07-31T08:00:00Z"), "user": "Mary", "comment": "xy" }, { "_id": .., "trailName": "Trail1" "update": ISODate("2023-07-31T08:00:00Z"), "user": "Joe", "c
MongoDB 聚合-匹配条件只针对第二个集合,但提供第一个集合的所有文档。
基本上,我的 mongodb 数据库 - >书籍,分数. 书籍 { "BOOK_ID" : "100", "BOOK_NAME" : "Book 1", "BOOK_DESC" : "abcd", }, { "BOOK_ID" : "101", "BOOK_NAME" : "Book 2", "BOOK_DESC" : "efgh", }, { "BOOK_ID" : "102", "BOOK_NAME" : "Book 3", "BOOK_DESC" : "ijkl", } 得分 { "BOOK_ID" : "100", "BOOK_CATEGORY" : "kids", "BOOK_SCORE" : "6", }, { "BOOK_ID" : "100", "BOOK_CATEGORY" : "Educational", "BOOK_SCORE
4 2024-01-20
编程技术问答社区
使用pymongo向mongodb的文档添加多个字段
我在mongo db中有一个示例文档集合,如下 [{"name":"hans","age":30,"test":"pass","pre":"no","calc":"no"}, {"name":"abs","age":20,"test":"not_pass","pre":"yes","calc":"no"}, {"name":"cdf","age":40,"test":"pass"}, {"name":"cvf","age":30,"test":"not_pass","pre":"no","calc":"yes"}, {"name":"cdf","age":23,"test":"pass"}, {"name":"asd","age":35,"test":"not_pass"}] 对于某些文档,字段pre和calc不存在.我想将这两个字段添加到没有两个字段的文档中,这些字段"pre":"null", "calc":"null" "pre":"null", "calc":"null"
6 2024-01-20
编程技术问答社区