不少文章中建用embedded document或manual references解, 但然不用於所有景.
以如下景例:
有collection cars, 的是每汽的信息:
{_id:...,
owner:...,
plate_number:...,
location:...,
model:<model_id>,
...
}
另一collection models, 的是每汽型的:
{_id:<model_id>,
name:...,
transmission:...,
displacement:...,
seats:...,
...
}
cars和models中的都是. 在需要索出所有排量少於2L的自. 於, 可以使用INNER JOIN非常的解, 但在MongoDB中麻多.
如果想用embedded document解, 就要原本存於models的型放入cars, 然不是一好主意.
如果用manual references,可以先查出符合件的型列表, 再查找相:
modelLst = models.find({transmission: 'A', displacement: {$lt: 2}}, {_id: 1}).map(function(item) {return item['_id']})
cars.find({model: {$in: modelLst}})
做也有一: $in查花的和modelLst的度是O(n), modelLst大, 查花多的. 在cars的model上建立索引不能解此.
於以上景, 你如何理?