我是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”
?
答案 0 :(得分:1)
_id字段应该始终是一个ObjectId,就像自动生成的一样。 我看不出您提出的结构无法在一对多关系中起作用的原因。
如果您想填充(加入)它们,则可以在源名称文章字段和您自己的id字段之间执行$ lookup。请参阅$ lookups:https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/。
或者,您可以在文章中引入sourceId字段,该字段将引用源。这样做的好处是,即使源名称更改了,引用也是安全的。