【发布时间】:2020-06-11 06:19:17
【问题描述】:
我有以下格式的 Mongo 文档:
{
"_id":{
"$oid":"1237563648fe93j3b5"
},
"stage_id":{
"$oid":"1213241423nn552l54j"
},
"payload":[
{
"_data":{
"name":"name1",
"description":"",
"parent":"",
"status":"NOT READY"
}
},
{
"_data":{
"name":"name2",
"description":"MS Visio",
"parent":"A7704",
"status":"OPERATING"
}
},
{
"_data":{
"assetnum":"name3",
"description":"MS Visio",
"parent":"7127",
"status":"OPERATING"
}
}
],
"response":[
{
"_data":{
"Error":{
"message":"AVJPA - The record already exists.
"attrname":"name",
"reasonCode":"AVJPA",
"status":"400"
}
},
"_meta":{
"status":"400"
}
},
{
"_data":{
"Error":{
"message":"AVJPA - The record already exists.
"attrname":"name",
"reasonCode":"AVJPA",
"status":"400"
}
},
"_meta":{
"status":"400"
}
},
{
"_data":{
"message":"success"
},
"_meta":{
"status":"204"
}
}
]
}
这种格式的文档有很多。 response 数组是对 payload 数组中项目的响应,这些项目已发布到 API 端点。所以响应数组中的index 0 就是payload 数组中index 0 有效载荷的响应。现在我想过滤集合并希望得到响应reasonCode是AVJPA的有效载荷。如何做到这一点?我正在使用以下代码来找出存在Error 的响应,但不确定如何找到与响应对应的有效负载。
logs.find({
"stage_id":1213241423nn552l54j
$elemMatch: {"_responsedata.Error": {$exists: true}}
})
logs 是我收藏的名称。我在 Python 中运行此代码并使用 PyMongo 客户端库。
【问题讨论】:
-
请发布预期结果,不清楚您要做什么。是否要返回
payload:[ 索引 0 和 1] ? -
没错。但不是索引。这些索引的数据作为一个数组。
标签: arrays mongodb mongodb-query nosql pymongo