mongodb中数据为{'request_body':{'a':1,'b':2,'c':3, ...}}, 如何使用python查询出的结果为{'a':1,'b':2,'c':3, ...}
时间: 2023-08-06 22:25:03 浏览: 64
可以使用MongoDB中的投影操作符 `$project` 和 `$arrayToObject` 来实现这个功能,具体代码如下:
```python
from pymongo import MongoClient
# 连接MongoDB数据库
client = MongoClient('mongodb://localhost:27017/')
db = client['test_db']
collection = db['test_collection']
# 查询数据并进行投影操作
pipeline = [
{'$match': {'_id': 123}}, # 根据_id字段查询数据
{'$project': {'_id': 0, 'request_body': 1}}, # 投影操作,只返回request_body字段
{'$replaceRoot': {'newRoot': {'$arrayToObject': {'$objectToArray': '$request_body'}}}} # 将request_body转换成字典
]
result = collection.aggregate(pipeline)
# 输出查询结果
for doc in result:
print(doc)
```
其中,`$project` 操作符用于投影操作,只返回 `request_body` 字段;`$replaceRoot` 操作符用于将 `request_body` 字段替换成新的根节点。在 `$replaceRoot` 操作符内部,使用了 `$arrayToObject` 和 `$objectToArray` 操作符将 `request_body` 转换成字典类型。最终查询结果为一个字典,其中包含了 `a`、`b`、`c` 等字段的值。
阅读全文