mongodb

时间:2016-01-19 20:07:33

标签: mongodb document-database database

建立这种关系的最佳方法是什么?我有一个房间集合和一个用户集合。一个房间可以包含许多用户。用户可以属于许多房间。 我想在房间集合中插入一个房间的用户(?)。是否有更好的方法,或者完全不正确地按照我的方式去做?

2 个答案:

答案 0 :(得分:1)

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

您可以存储room集合中user集合中的ObjectIds数组,以确定某人加入的房间。同样,您可以在user集合中的room集合中存储ObjectIds数组,以确定用户已加入某个会议室。

您的架构看起来与以下类似:

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' }]
});

答案 1 :(得分:0)

看起来像是:

{_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 ] }})