MongoDB中的1:m关系
在博客系统中用户(user)和博文(post)是1对多关系,在mongodb中我们怎么表述这种关系呢?在mongo中我们可以利用在多端保存1端的ObjectId
来维持这种1:m
关系,下面分别列出user
和post
的结构:
user
的结构1
2
3
4
5
6
7
8
9{
"_id" : ObjectId("5ae3caa35ece85125d2429f7"),
"username" : "百思可乐1",
"password" : "123456",
"age" : 21,
"updateAt" : ISODate("2018-04-28T01:11:54.698Z"),
"createdAt" : ISODate("2018-04-28T01:11:54.698Z"),
"__v" : 0
}
post
的结构1
2
3
4
5
6
7
8{
"_id" : ObjectId("5ae3384594aa810f8d17f073"),
"title" : "ruby",
"body" : "sdasda",
"author" : ObjectId("5ae3caa35ece85125d2429f7"),
"__v" : 0
}
上面我们可以看到我们在post
document里添加个一个author
的字段里面保存了user
的ObjectId
.
于是我们就可以执行下面这些操作了:
查询一个用户发布的所有文章
1
2var user = db.user.findOne();
var posts = db.post.find({author: user._id});查询一篇文章的作者
1
2var post = db.post.findOne();
var user = db.user.findOne({author: post.author });用户创建文章
1
2
3
4
5
6
7var user = db.user.findOne();
var posts = db.post.insert(
{
title: "ruby",
body: "sdasda",
author: user._id
});