MongoDB一对多数据结构难题

时间:2019-04-30 15:16:21

标签: json mongodb

我是mongodb的新手,我正在尝试使用一对多数据模型构建数据。但是,按照现在的结构,我认为它不会起作用。

我有两个收藏夹;资料和文章。

在存储源代码时,我允许Mongo使用objectID自动生成_id字段。现在,当我再次引用mongodb一对多文档时,我想知道是否应该使用可以在文章中引用的源名称生成_id

下面是存储源的示例

{ _id:"5cc76a83d6c44rae88e221b7" id:"abc-news-au" name:"ABC News AU" description:"ABC News is a national news service in..." url:"https://www.abc.net.au/news/" language:"en" country:"au" }

下面是文章存储方式的一个示例

{ _id:"5c93ffbf986d098b27b55c72 title:"'It doesn't get you stoned': url":"https://www.abc.net.au/news/2019-03-09/medicinal-cannabis-and-ageing/10824750" description":"A growing number of senior Australians..." author:"ABC North Coast By Catherine Marciniak" publishedAt":"2019-03-08T20:00:09.000Z" content:"Sixty-five-year-old Julie has never smoked a joint in..." name:"ABC News AU" urlToImage:"https://www.abc.net.au/news/image/10729312-16x9-700x394.jpg" summarization:"Sixty-five-year-old Julie has never smoked a joint.." source:"abc-news-au" }

以当前的来源和文章的结构方式,它是否被视为一对多数据结构?还是我需要将源文档中的id字段转换为_id字段。例如,将objectID更改为_id: “abc-news-au”,将文章中的引用ID更改为sources_id: “abc-news-au”

1 个答案:

答案 0 :(得分:1)

_id字段应该始终是一个ObjectId,就像自动生成的一样。 我看不出您提出的结构无法在一对多关系中起作用的原因。

如果您想填充(加入)它们,则可以在源名称文章字段和您自己的id字段之间执行$ lookup。请参阅$ lookups:https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/

或者,您可以在文章中引入sourceId字段,该字段将引用源。这样做的好处是,即使源名称更改了,引用也是安全的。