我正在使用python笔记本从mongo的databricks中获取数据。但是我不确定如何用一个常规字段和一个数组组合来过滤数据。谁能帮我吗?
第一步:连接到Mongo
Step2:在下面的结构中定义
Input_Schema= StructType([StructField("lot",StringType(),True),
StructField("lot_status",StringType(),True),
StructField("recipients",ArrayType(
StructType([
StructField("account",StringType(),True),
StructField("id",IntegerType(),True),
StructField("type",StringType(),True),
StructField("status",StringType(),True)
])))])
Step3:创建用于过滤数据的管道
pipeline = [{'$match':{'lot_status':'fetch'}}]
使用上述管道,我们仅提取状态为'fetch'的那些批次
Step4:使用以下语句获取数据
Data = spark.read.format("com.mongodb.spark.sql.DefaultSource").option("uri",connectionstring).option("pipeline",pipeline).schema(input_schema).load()
display(Data)
获取所有具有lot_status ='Fetch'的批次的输出
但是我需要从数组中添加一个过滤器
其中状态=“获取”。现在使用管道,我可以使用lot_status过滤数据,但是我不确定如何使用两个条件进行过滤。
如果我尝试在下面使用它,它正在从接收者状态中获取所有集合(获取和不获取)
pipeline = [{'$match':{ '$and': [ { 'lot_status':'Fetch' }, {'recipients.status':'Fetch'} ] }}]