为什么相似的查询会得到两个不同的结果?

2024-10-01 17:35:42 发布

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

我正在尝试将一个文档链接到另一个文档。为此,我尝试将一个文档的ObjectID存储在另一个文档中。我尝试了几种不同的方法,它们应该会产生相同的结果,但实际上它们看起来是不同的。以下是我尝试的方法:

方法1

owner['ownedCar'] = db.cars.find_one({ '_id' : ObjectId( $theCarsObjectIDstring ) }, {'_id': 1})
db.owners.save(owner)

在数据库中是这样的:

{ 
_id {"$oid": "502186421fe3321dfa000001"}
} 

和方法2

car = db.cars.find_one( { '_id' : ObjectId( $theCarsObjectIDstring ) } )
owner['ownedCar'] = car['_id']
db.owners.save(owner)

看起来是这样的:

{"$oid": "502186421fe3321dfa000001"}

他们不应该看起来一样吗?链接文档的首选方式是什么?你知道吗

编辑为什么这个问题会被否决?你知道吗


Tags: 方法文档iddb链接savefindcars
1条回答
网友
1楼 · 发布于 2024-10-01 17:35:42

这两个结果是相同的,不同的是如何挑选结果来填充链接字段。你知道吗

当您使用find的第二个参数返回字段时,即使它只是一个参数,它也总是返回一个以字段名为键、字段值为值的对象。使链接字段与该对象相等,这样不仅可以将ID作为链接字段的值返回。所以第一次查询的结果是:

{ 
_id {"$oid": "502186421fe3321dfa000001"}
} 

你让磁场等于这个。你知道吗

或者在第二个查询中物理地挑选car['_id'],这样链接字段的值就是id

这是驱动程序和语言在解释它应该如何返回值方面的差异。你知道吗

我想说第二种方法是最好的方法,因为第一种方法以额外对象的形式向字段添加不必要的膨胀。你知道吗

相关问题 更多 >

    热门问题