MongoDB ObjectID 的 JSON 序列化(ex-scope 查询)
Posted
技术标签:
【中文标题】MongoDB ObjectID 的 JSON 序列化(ex-scope 查询)【英文标题】:JSON serialization of MongoDB ObjectID (ex-scope query) 【发布时间】:2013-01-17 09:45:09 【问题描述】:我很困惑为什么变量 temp_dict 在 else 条件之外可用?当我将数组保存到 MongoDB 时,它将在数组中的每个项目上设置 ObjectId。 Json 解析器不知道如何序列化 ObjectId。
def read_temporary_file(filename, has_header=False):
wb = load_workbook(filename=filename, use_iterators=True)
ws = wb.get_active_sheet() # ws is now an IterableWorksheet
headers = []
rows = []
documents = []
for row in ws.iter_rows(): # it brings a new method: iter_rows()
if has_header:
has_header = False
for cell in row:
headers.append(cell.internal_value)
else:
temp_dict = OrderedDict()
for cell in row:
temp_dict[cell.column] = cell.internal_value
rows.append(temp_dict)
documents.append(temp_dict)
print("Saving documents to MongoDB")
__save(documents)
print("Printing %s" % temp_dict)
return (headers, rows)
【问题讨论】:
【参考方案1】:在 Python 中,整个函数就是作用域。像 else 这样的子句并不是新的作用域。
【讨论】:
这很奇怪......所以基本上等待GC收集函数资源然后它被处置。关于如何在不创建另一个 OrderedDict() 的情况下解决此问题的任何想法 限定条件块会使它们几乎无用 - 代码将被覆盖在非本地定义中。您可以随时使用del temp_dict
,但这就是 GC 的用途。亚历克斯在这里对del
的使用有一个很好的介绍 - ***.com/questions/2192926/…以上是关于MongoDB ObjectID 的 JSON 序列化(ex-scope 查询)的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB ObjectID 的 JSON 序列化(ex-scope 查询)
在 C# 中从序列化为 JSON 的 mongodb 文档中删除 ObjectId
连接mongoDB根据ObjectID写入json数据(初步)
如何在 HTTP 请求 JSON 正文中传递 mongodb ObjectId()?
MongoDB PHP:如何使用 JSON 提要获取 ObjectId? (它是空白的)
MongoDb - 要创建一个新的ObjectId,请尝试`Mongoose.Types.ObjectId`而不是使用`Mongoose.Schema.ObjectId`