为什么db.insert(dict)在使用pymongo时将_id键添加到dict对象

use*_*199 10 python dictionary mongodb pymongo

我用以下方式使用pymongo:

from pymongo import *
a = {'key1':'value1'}
db1.collection1.insert(a)
print a
Run Code Online (Sandbox Code Playgroud)

这打印

{'_id': ObjectId('53ad61aa06998f07cee687c3'), 'key1': 'value1'}
Run Code Online (Sandbox Code Playgroud)

在控制台上.我知道_id被添加到mongo文档中.但为什么这也添加到我的python字典中呢?我不打算这样做.我想知道这是什么目的?我可以将此字典用于其他目的,并将字典更新为将其插入文档的副作用?如果我必须将这个字典串行化为一个json对象,我会得到一个

ObjectId('53ad610106998f0772adc6cb') is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

错误.在db中插入文档时,insert函数不应该保持字典的值相同.

sun*_*raj -2

显然文档回答了你的问题

MongoDB 以BSON序列化格式将文档存储在磁盘上。BSON是文档的二进制表示形式JSON,尽管它包含比 JSON 更多的数据类型。

字段的值可以是任何 BSON 数据类型,包括其他文档、数组和文档数组。以下文档包含不同类型的值:

var mydoc = {
               _id: ObjectId("5099803df3f4948bd2f98391"),
               name: { first: "Alan", last: "Turing" },
               birth: new Date('Jun 23, 1912'),
               death: new Date('Jun 07, 1954'),
               contribs: [ "Turing machine", "Turing test", "Turingery" ],
               views : NumberLong(1250000)
            }
Run Code Online (Sandbox Code Playgroud)

了解更多BSON

  • 您所指的文档是 mongodb 的。我在这里谈论 pymongo,我的问题不是关于 mongo 文档,而是关于 python 字典对象。 (4认同)