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