pymong中的\u get_collection().find和objects()的结果之间的差异

2024-04-19 03:21:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pymongo来查询mongodb。我有一个名为alph\u var的集合,该集合中的一个文档如下:{'a':'1','c':None,'d':'1sfa','e':None}

如果我正在做alph_var._get_collection().find({'a':'1'}),我将得到以下结果:

{'_id':ObjectId('1242as223'),'a':'1','d':'1sfa'}

当我做alph_var.objects(a='1')[0]._data时,我得到了以下结果:

^{pr2}$

我对pymongo完全陌生,知道为什么会这样吗?在


Tags: 文档noneiddatagetobjectsvarmongodb
1条回答
网友
1楼 · 发布于 2024-04-19 03:21:02

我看到你在使用MongoEngine,一个围绕PyMongo的包装器(“对象文档映射器”)。当您调用\u get_collection并获取底层PyMongo collection实例的句柄并对其进行查询时,您将获得MongoDB中BSON文档的原始表示形式,而无需进一步处理。显然,这个特定的文档只有字段“_id”、“a”和“d”。它根本不包含字段“c”和“e”。(MongoDB文档可以包含或省略除“_id”之外的任何字段)

但是,当您使用MongoEngine时,它会在您的文档上强制实施一个模式。我想您已经在MongoEngine模式中定义了字段“c”和“e”。因此,当MongoEngine检索文档时,它发现文档缺少“c”和“e”,因此在其内部“_data”dict中将它们设置为None

相关问题 更多 >