MongoDB - 如何建立这种关系?

时间:2016-09-12 12:55:54

标签: mongodb mongoose relationship data-modeling

我有以下收藏品:

客户端 地址

现在假设,我希望能够向一个客户端添加多个地址,并且地址集合仅存储地址名称。因此,所有其他信息(如地址参考或街道号码)应存储在客户端嵌入数据上。

我在考虑这样的事情:

客户集合的文档示例:

  • 名称:'客户名称'

  • normalizedName:'客户名称'

  • 电子邮件:'email@email.com'

  • 地址:[ {addressId:ObjectId('objectid'),数字:6,默认值:true,参考:'超市旁边'} ... ]

  • isCompany:false

解决了集合的文档示例:

  • (_ id):ObjectId('objectid')

  • 姓名:'Griffin Dr. New Windsor'

  • normalizedName:'格里芬博士。新的windsor'

  • 州:'NY'

  • 国家:'美国'

一切看起来都很好(如果我错了,请纠正我,如果这种方法有什么不好的话,我需要改变一些东西)。但是现在,我正在创建一个过滤器(Angular2和mongoose作为ODM),客户端排序,是否有办法按地址名称对客户进行排序?考虑到我有一个默认的地址属性?如果没有,如果我改变这些集合模型中的某些内容怎么样?我想将地址名称添加到地址数组(客户端集合)中的对象,所以我可以按这样的方式排序:sort(client.address.name)...

还有一点是:我在一个新的集合中分隔了我的地址,因为我将为用户提供导入地址数据库的可能性,因此我需要一个没有附加客户端的地址列表。

1 个答案:

答案 0 :(得分:1)

虽然您希望为集合建模的方式没有错,但是如果您遵循MongoDB的文档https://docs.mongodb.com/manual/tutorial/model-referenced-one-to-many-relationships-between-documents/

它建议易于嵌入文档以保持一对多的关系。

您认为客户可以关联多少个地址? 通过上面粘贴的链接只需几行,而且相当直接,有很好的例子。看看它是否可以帮助您解决查询问题。