MongoDB如何使2个嵌套文档具有相同的_id?

时间:2018-08-09 17:03:52

标签: database mongodb mongoose

我的mongodb集合中目前有2个文档。他们是:

"_id": "5b6c7109c21dfe2a4b557b1e",
"title": "Childish Gambino",
"datetime": "2018-09-16T00:00:00.000Z",
"venue": {
     "name": "Madison Square Garden",
     "city": "New York",
     "state": "NY"
     "_id": "5b6c7109c21dfe2a4b557b1d",
}

"_id": "5b6c71133acdbe2a4e51615d",
"title": "The Eagles",
"datetime": "2018-09-12T00:00:00.000Z",
"venue": {
     "name": "Madison Square Garden",
     "city": "New York",
     "state": "NY"
     "_id": "5b6c71133acdbe2a4e51615c",
}

尽管这是两个不同的音乐会,但都在麦迪逊广场花园举行。但是,在2个文档中,麦迪逊广场花园有2个不同的“ _id”属性。有什么方法可以使它们具有相同的_id,还是每次添加在Madison Square Garden上发生的文档时都必须手动输入相同的_id?通常认为手动输入_id是可以的做法吗? mongodb的新手,所以将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

如果您使用的是MongoDB 3.4版及更高版本,则可以使用$lookup,这意味着您可以在架构中向实际的reference添加一个Madison Square Garden(我假设它位于另一个集合中) )。这样,您的数据可能看起来像这样:

"_id": ObjectId('5b6c71133acdbe2a4e51615d'),
"title": "The Eagles",
"datetime": "2018-09-12T00:00:00.000Z",
"venueId": ObjectId('5b6c71133acdbe2a4e51615c')

您将可以使用$lookup feature交叉引用该场所。

注意:这绝对比嵌入数据更有效,但是它为您提供了一个参考_id。