您将如何与MongoDB进行多对多关联?

例如假设您有一个用户表和一个角色表.用户有很多角色,角色有很多用户.在sqlland中,您将创建一个UserRoles表.

Users:
    Id
    Name

Roles:
    Id
    Name

UserRoles:
    UserId
    RoleId

MongoDB是如何处理这种关系的?

推荐答案

根据您的查询需求,您可以将所有内容放入用户文档中:

{name:"Joe"
,roles:["Admin","User","Engineer"]
}

要获得所有工程师,请使用:

db.things.find( { roles : "Engineer" } );

如果要在单独的文档中维护角色,则可以在角色数组中包含文档的_id,而不是名称:

{name:"Joe"
,roles:["4b5783300334000000000aa9","5783300334000000000aa943","6c6793300334001000000006"]
}

并设置如下角色:

{_id:"6c6793300334001000000006"
,rolename:"Engineer"
}

Mongodb相关问答推荐

如何使用ID数组对一个集合中的金额求和并更新另一个集合中的字段?

如何使用 MindsDB 和 MQL(对于我的 MongoDB 实例)实施零样本分类?

如何在 mongodb 中将一个方面的结果合并到一个有条件的列表中?

MongoDB shell:如何删除列表以外的所有集合

使用golang中的过滤器从mongodb复合集合中获取所有数据

根据聚合管道MongoDB Atlas触发器中的条件更新多个字段

_id 和 $oid 的区别; mongo 数据库中的 $date 和 IsoDate

mongoose如何在幕后工作

Mongoose 与 mongodb 如何返回刚刚保存的对象?

Mongodb插入没有_id字段的文档

Springboot 使用 find*() 查询时出现 Mongodb 错误

Mongoose 的保存回调是如何工作的?

有没有办法自动更新 MongoDB 中的两个集合?

MongoError: The dollar ($) prefixed field '$push' in '$push' is not valid for storage

MongoDB:查询和检索嵌入式数组中的对象?

我在更新中对 $set 和 $inc 做错了什么

在 MongoDB 中比较日期(moment.js)

Mongo 条件为key doesn't exist?

Mongodb 查找除一两个条件之外的所有内容

如何在 Windows 上停止 mongodb 服务器?