我有一个关于使用mongodb和mongoose建模愿望清单的问题。我的想法是,我需要一个能够拥有许多不同愿望清单的用户,这些愿望清单包含许多愿望,每个愿望都会引用一篇文章
我正在考虑它,因为一个心愿单只属于我认为使用嵌入式文档的单个用户。
希望列入愿望清单的愿望相同。
所以我有类似的东西
var UserSchema = new Schema({
...
wishlists: [wishlistSchema]
...
})
var WishlistSchema = new Schema({
...
wishes: [wishSchema]
...
})
但我的问题是如何处理这篇文章?我应该使用引用还是应该将文章的数据复制到嵌入文档中。
如果我使用嵌入式文档,我遇到了更新问题。当文章的价格发生变化时,更新引用本文的每一个愿望都会变得艰难。但要获得这些愿望的文章是件小事。
如果我使用引用,更新不再是问题,但是当我根据他们的文章标准过滤愿望时(当我根据价格,类别等过滤愿望时)我遇到了问题。)
我认为第二种方式可能是最好的,但我不知道如何根据文章的字段构建一个过滤愿望的查询。我尝试了许多使用填充的东西但是当你需要根据嵌套的对象字段填充时,没有什么效果很好。 (例如,如果他们的文章对某些条件作出反应,他们会得到祝福。)
这种查询是否可行?
对于loooong问题和我糟糕的英语问题:/但任何建议都会很棒!
答案 0 :(得分:1)
根据我处理NoSQL数据库(主要是mongo)的经验,在设计集合时,不要考虑关系。相反,请考虑如何显示,页面,和检索文档。
我希望在出现更改时嵌入和更新多个架构,而不是执行ref,原因有多种。
我会说经验法则是只在你不需要将它们展示在一起时才将它们分开。如果你这样做的话,加入他们并非不可能,但肯定会更加麻烦。