我正在使用PyMongo和MongoDB 4.0.1。对于该示例,我将其集合称为“用户”和“汽车”。因此我的用户只能获得一辆汽车(一对一关系)
User
----
_id : ObjectId("2b2543b24713ea82ce3ae21f")
Firstname : John
Lastname : Doe
Car : ObjectId("5b854bb806a77a06ce321f1f")
Car
----
_id : ObjectId("5b854bb806a77a06ce321f1f")
Model : Tesla Motor
当我执行此查询时:
db.user.aggregate(
{$unwind: "$car"},
{$lookup: {
from:"car",
localField: "car",
foreignField: "_id",
as: "car"
}}
)
输出向我显示汽车属性将是具有一个对象的一系列汽车...
{
"_id" : ObjectId("2b2543b24713ea82ce3ae21f"),
"firstname" : "John",
"lastname" : "Doe" ,
"car" : [ {
"_id" : ObjectId("5b854bb806a77a06ce321f1f"),
"model" : "Tesla Motor"
}]
}
有可能只获得一个对象而不是一个数组?
关于引用的另一个问题。许多不同的用户可以得到同一辆车。在No SQL数据库中最好引用对象ID,或者最好在User集合中创建所有car字段?因为我必须更新所有不同的数据。例如,如果对Car进行更改,我认为仅更新Car集合中的一个文档要比更新用户集合中的50行更容易。
您认为我是对的吗?