我有以下收藏品:
客户端 地址
现在假设,我希望能够向一个客户端添加多个地址,并且地址集合仅存储地址名称。因此,所有其他信息(如地址参考或街道号码)应存储在客户端嵌入数据上。
我在考虑这样的事情:
客户集合的文档示例:
名称:'客户名称'
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)...
还有一点是:我在一个新的集合中分隔了我的地址,因为我将为用户提供导入地址数据库的可能性,因此我需要一个没有附加客户端的地址列表。
答案 0 :(得分:1)
虽然您希望为集合建模的方式没有错,但是如果您遵循MongoDB的文档https://docs.mongodb.com/manual/tutorial/model-referenced-one-to-many-relationships-between-documents/
它建议易于嵌入文档以保持一对多的关系。
您认为客户可以关联多少个地址? 通过上面粘贴的链接只需几行,而且相当直接,有很好的例子。看看它是否可以帮助您解决查询问题。