python - 如何在 lambda 函数中使用 python 在 Json 输出中搜索匹配列表?
问题描述
我有两个收藏社区和个人资料。
社区收集样本数据:
_id : ObjectId("5dc1f30abcafe70001bd0075")
communityname : "testing1",
user_id : ObjectId("5dc1f2ed4a59120001a4d09d")
active_flag : 0
_id : ObjectId("5dc1f30abcafe70001bd0082")
communityname : "testing1",
user_id : ObjectId("5dc4a8b7360a0100012d3ec8")
active_flag : 0
配置文件收集样本数据:
_id : ObjectId("5dc1f2ed4a59120001a4d09d"),
username : "Haneesh",
"name" : "hani"
_id : ObjectId("5dc4a8b7360a0100012d3ec8"),
username : "Harish",
name : "Hari"
我在下面编写了这样的 lambda 函数。
community =db.community
comm_id = ObjectId(event['c_id'])
user1 = list(community.aggregate([{
"$match" : { "_id" : comm_id }
},
{
"$lookup" : {
"from" : "profile",
"localField" : "user_id",
"foreignField" : "_id",
"as" : "details"
}
},
{ "$unwind" : "$details" },
{
"$project" : {
"_id" : 0,
"username" : "$details.username",
"name" : "$details.name"
}
}
]))
user2 = json.loads(json.dumps(user1, default=json_util.default))
return user2
我已经执行了 lambda 函数,我得到如下输出:
[
{
"username": "anvithpm026",
"name": "Anvith P M"
},
{
"username": "shailu",
"name": "shail"
},
{
"username": "sukumar",
"name": "suku"
}
]
现在我关心的是,如何搜索匹配列表。例如,如果一个字母与用户名匹配,那么它会得到用户名和名称。我试过使用正则表达式,但没有用。请帮我解决。提前致谢。
解决方案
一个小的调整可以完成这项工作,下面是查询:
user1 = list(community.aggregate([{
"$match": { "_id": ObjectId("5dc1f30abcafe70001bd0075") }
},
{
"$lookup": {
"from": "profile",
"localField": "user_id",
"foreignField": "_id",
"as": "details"
}
}, { "$unwind": "$details" }, { "$match": { "details.username": /eesh/i } }, {
"$project": {
"_id": 0,
"username": "$details.username",
"name": "$details.name"
}
}]))
/eesh/i
请根据您的要求动态传递。另一方面,我尝试自己添加这个过滤器{ "details.username": /eesh/i }
——$lookup
这样我们可以避免跟随$unwind
&$match
阶段,但是由于我们有两个过滤器要检查——由于使用regex
in $expr
of 的限制很少$match
,这个查询是一个 &即使这更容易做到。
推荐阅读
- php - 对 oauth/request_token 的 Twitter API curl 请求返回 null - php 5.6
- node.js - 安装 expo-cli 时出现代码 ELIFECYCLE 错误
- html - 如何在 md-chips 中的每个 md-chip 上方添加标签?
- angular - 如何将消息从服务器发送到 Web 应用程序(角度)
- bash - 如何在 bash 上同时运行 2 个命令
- javascript - 使用 jQuery (ajax, json) 和 Spring MVC 发送多行表单数据
- scala - 对两个列表进行元素总和的最快方法
- c# - 通过蓝牙流式传输音频
- rest - 用于获取 HDInsight 群集的性能指标的 REST API?
- purescript - 如何在 Purescript 中使用 mapWithIndex?