1:1 (1对1)
1: N (1对多)
N: 1 (多对1)
N: N (多对多)
嵌入式关系
这种数据结构的缺点是,如果用户和用户地址在不断增加,数据量不断变大,会影响读写性能
文档嵌套的数量和深度没有限制,但MongoDB目前版本限制一个文档最大为16MB
{
"name": "Tom",
"address": [
{
"city": "Los Angeles"
},
{
"city": "Chicago"
}]
}
只需要查询一次
db. relation. find(
{ "name": "tom"},{ "address": 1, "_id": 0}
)
引用式关系
手动引用
引用式关系是设计数据库时经常用到的方法,这种方法把用户数据文档和用户地址数据文档分开,通过引用文档的 id 字段来建立关系
{
"name": "jack",
"address_id":[
ObjectId( "5fcda6c686463b86f2650f78"), ObjectId( "5fcda6d086463b86f2650f79")
]
}
需要两次查询,第一次查询用户地址的对象id(ObjectId),第二次通过查询的id获取用户的详细地址信息
var result = db. relation. findOne({ "name": "jack"},{ "address_id": 1})
db. relation. find({ "_id":{ "$in": result[ "address_id"]}})
DBRefs
DBRef的形式:
{ $ref : , $id : , $db : }
三个字段表示的意义为:
$ref:集合名称
$id:引用的id
$db:数据库名称,可选参数
{
"name": "hjy",
"address":{
"$db": "test1",
"$ref": "relation",
"$id": ObjectId( "5fcda6d086463b86f2650f79")
}
}
DBRef的查询
var user = db. hjy. findOne({ "name": "hjy"})
var add = user. address
db[ add. $ref]. findOne({ "_id": add. $id})
MongoDB 文档间的关系
标签:data use 需要 done opera key tom 增加 数据
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did118051