如何通过获取mongodb集合值来调用python函数
Posted
技术标签:
【中文标题】如何通过获取mongodb集合值来调用python函数【英文标题】:how to call python function by getting mongob collection values 【发布时间】:2021-10-18 05:27:25 【问题描述】:如何在mongodb中创建文档和集合来进行python代码配置。获取mongodb调用的属性名、数据类型、函数?
mongodb 集合示例示例
db.attributes.insertMany([
attributes_names: "email", attributes_datype: "string", attributes_isNull="false", attributes_std_function = "email_valid"
attributes_names: "address", attributes_datype: "string", attributes_isNull="false", attributes_std_function = "address_valid"
]);
Python 脚本和函数
def email_valid(df):
df1 = df.withColumn(df.columns[0], regexp_replace(lower(df.columns[0]), "^a-zA-Z0-9@\._\-| ", ""))
extract_expr = expr(
"regexp_extract_all(emails, '(\\\w+([\\\.-]?\\\w+)*@\\[A-Za-z\-\.]+([\\\.-]?\\\w+)*(\\\.\\\w2,3)+)', 0)")
df2 = df1.withColumn(df.columns[0], extract_expr) \
.select(df.columns[0])
return df2
如何获取python脚本中所有的mongodb值,并根据属性调用函数。
【问题讨论】:
【参考方案1】:从 python 脚本创建MongoDB
集合:
import pymongo
# connect to your mongodb client
client = pymongo.MongoClient(connection_url)
# connect to the database
db = client[database_name]
# get the collection
mycol = db[collection_name]
from bson import ObjectId
from random_object_id import generate
# create a sample dictionary for the collection data
mydict = "_id": ObjectId(generate()),
"attributes_names": "email",
"attributes_datype": "string",
"attributes_isNull":"false",
"attributes_std_function" : "email_valid"
# insert the dictionary into the collection
mycol.insert_one(mydict)
要在MongoDB
中插入多个值,请使用 insert_many() 而不是 insert_one() 并将字典列表传递给它。所以你的字典列表看起来像这样
mydict = [ "_id": ObjectId(generate()),
"attributes_names": "email",
"attributes_datype": "string",
"attributes_isNull":"false",
"attributes_std_function" : "email_valid" ,
"_id": ObjectId(generate()),
"attributes_names": "email",
"attributes_datype": "string",
"attributes_isNull":"false",
"attributes_std_function" : "email_valid" ]
将MongoDB
集合中的所有数据获取到python脚本中:
data = list()
for x in mycol.find():
data.append(x)
import pandas as pd
data = pd.json_normalize(data)
然后在访问字典列表的元素时访问数据:
value = data[0]["attributes_names"]
【讨论】:
多属性怎么办。 创建所有数据的列表并使用 insert_many() 而不是 insert_one(),我也更新了答案 我无法在直接 mongodb 中写入 id 部分。 是的,我认为当您在没有 python 的情况下直接在 MongoDB 上工作时,MongoDB 会生成自己的 id。如果它没有生成,那么也许你也可以从 python 代码中删除它 是的,你是对的。我已将其删除并且工作正常。以上是关于如何通过获取mongodb集合值来调用python函数的主要内容,如果未能解决你的问题,请参考以下文章