在我的mongodb帖子集中获取所有类别的最佳方式是什么
我正在使用Express、MongoDB和React开发一个博客应用程序。我肯定更喜欢使用关系数据库,但我想更喜欢基于文档的数据库,所以我就在这里 我有一个处于当前状态的帖子集,如下所示:在我的mongodb帖子集中获取所有类别的最佳方式是什么,mongodb,express,Mongodb,Express,我正在使用Express、MongoDB和React开发一个博客应用程序。我肯定更喜欢使用关系数据库,但我想更喜欢基于文档的数据库,所以我就在这里 我有一个处于当前状态的帖子集,如下所示: [ { "id": "001", "category": "fishing", "title": "jigs", &q
[
{
"id": "001",
"category": "fishing",
"title": "jigs",
"body": "Lorem ipsum dolor sit amet, consectetu"
},
{
"id": "002",
"category": "cooking",
"title": "tuna casserole",
"body": "Lorem ipsum dolor sit amet, consectetur"
},
...]
当你进入url/posts时,你会得到所有的帖子,当你进入url/posts/cooking时,你当然会得到cooking
当我在前端处理存根数据时,我从json文件中创建了一个类别列表,如下所示:
const uniqueCategories = [
...new Set(props.posts.map((post) => post.category)),
];
但是,我是按类别获取帖子的,如下所示:
useEffect(() => {
async function fetchPosts() {
fetch(`api/posts/${category}`)
.then((res) => res.json())
.then(
(result) => {
setPosts(result);
console.log('result', result);
}
);
}
fetchPosts();
}, [category]);
我还没有实现所有类别,但这并不重要。现在,如果我得到烹饪类别,我上面的uniqueCategories函数将只映射烹饪
所以问题是。构建此架构的最佳方式是什么
我应该有一个类别集合吗?在posts集合中,我应该引用categories集合的id吗
还是有更好的方法?这取决于您的应用程序及其查询 选择1 若你们只想得到所有文章的类别,你们可以只索引你们的类别和使用方法。缺点是不能为类别添加其他字段,例如类别说明 代码示例:
db.posts.createIndex({category:1});//为类别字段创建索引
db.posts.distinct(“类别”)/[“钓鱼”、“烹饪”]
选择2
创建类别集合:
{
_id:“钓鱼”,
...
}
您不需要使用MongoDB default ObjectId作为\u id
,因为类别名称是唯一的,您可以将类别名称设置为\u id
,这也允许您在不进行任何额外查找的情况下获取帖子类别名称。使用此选项,可以为类别添加其他字段,例如:
{
_id:“钓鱼”,
名称:“钓鱼”,
描述:“所有钓鱼爱好者的类别!”
}
然后在您的post
集合中,您可以使用category\u id
作为category值
{
“id”:“001”,
“类别”:“捕鱼”,
“标题”:“夹具”,
“正文”:“Lorem ipsum dolor sit amet,Concertetu”
},
若你们想得到分类列表,你们可以直接查询分类集合