繁体   English   中英

mongodb中的多对多数据建模

[英]Many to Many Data modelling in mongodb

建立这种关系的最佳方法是什么? 我有一个房间集合和一个用户集合。 一个房间可以容纳许多用户。 一个用户可以属于多个房间。 我当时正在考虑将房间的用户插入到房间集合的数组(?)中。 有没有更好的方法,或者完全按照我的方式做是不正确的?

您的方法是正确的。 MongoDB不需要架构,因此您可以将对另一个集合中项目的引用存储在一个集合中。

您可以将来自room集合的ObjectIds数组存储在user集合中,以识别一个人加入了哪些房间。 同样,您可以在room集合中存储来自user集合的ObjectId数组,以标识哪些用户加入了房间。

您的架构将类似于以下内容:

var UserSchema = new Schema({
  'name': String,
  rooms: [{ type: Schema.Types.ObjectId, ref: 'RoomSchema' }]
});

var RoomSchema = new Schema({
  'name': String,
  'users': [{ type: Schema.Types.ObjectId, ref: 'UserSchema' }]
});

它可能看起来像:

{_id:"123", "type":"room", "users":[ 111, 222]}
{_id:"111", "type":"user", "room": [ 123, 456]}

示例在房间中添加用户:

db.test.update( { _id: "123" }, { $addToSet: {"users": 333 } } )

示例从房间删除用户:

db.test.update( { _id: "123" }, { $pullAll: { scores: [ 111, 222 ] }})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM