MongoDB查询时怎么将一个json格式的字符串转成对象?并提取其中的一个属性json字符串如下:remote_addr18016849234server_port443http_refererhttpsfcpcszhongancomtimestamp2023-03-09T043744344Zupstream_addr172201278180cluster_id4time2023-03-09 1
在MongoDB中,可以使用MongoDB的聚合管道操作来将json格式的字符串转换为对象并提取其中的属性。
以下是一个示例的聚合管道操作:
db.collection.aggregate([
{
$addFields: {
data: {
$cond: {
if: { $eq: [{ $type: "$request_body" }, "string"] },
then: { $parseJSON: "$request_body" },
else: "$request_body"
}
}
}
},
{
$addFields: {
username: "$data.username"
}
},
{
$project: {
_id: 0,
username: 1
}
}
])
在上述聚合管道操作中,首先使用$addFields操作将request_body字段转换为一个对象类型的字段data。然后使用$addFields操作将data.username赋值给新的字段username。最后使用$project操作指定只返回username字段。
执行上述聚合管道操作后,将会返回一个只包含username字段的文档。
请注意,上述聚合管道操作中使用了$parseJSON操作符来解析request_body字段的值为对象类型,这需要MongoDB的版本为4.0以上。如果您的MongoDB版本较低,可以考虑使用$jsonParse操作符来替代$parseJSON操作符。
希望对你有帮助
原文地址: http://www.cveoy.top/t/topic/hQzC 著作权归作者所有。请勿转载和采集!