面试题答案
一键面试设计文档结构
假设文档结构如下:
document = {
"main": {
"sub1": {
"name": "example1",
"value": 15,
"sub_sub1": [
{
"sub_name": "sub_example1",
"sub_value": 20
},
{
"sub_name": "sub_example2",
"sub_value": 5
}
]
},
"sub2": {
"name": "example2",
"value": 8,
"sub_sub2": [
{
"sub_name": "sub_example3",
"sub_value": 12
}
]
}
}
}
插入文档
def insert_document(parent_doc, new_doc):
for key, value in new_doc.items():
parent_doc[key] = value
return parent_doc
new_doc = {
"sub3": {
"name": "example3",
"value": 18,
"sub_sub3": [
{
"sub_name": "sub_example4",
"sub_value": 25
}
]
}
}
document = insert_document(document, new_doc)
查询特定条件下的子文档数据
def query_documents(doc, target_substring, min_value):
results = []
def traverse(node):
if isinstance(node, dict):
if "name" in node and isinstance(node["name"], str) and target_substring in node["name"] and \
"value" in node and isinstance(node["value"], int) and node["value"] > min_value:
results.append(node)
for sub_node in node.values():
traverse(sub_node)
elif isinstance(node, list):
for item in node:
traverse(item)
traverse(doc)
return results
target_substring = "example"
min_value = 10
query_results = query_documents(document, target_substring, min_value)
print(query_results)
以上代码实现了设计文档结构、插入新文档以及按照特定条件查询子文档数据的功能。其中插入文档部分将新文档直接合并到原文档中,查询部分通过递归遍历文档结构找到符合条件的子文档并返回。