В моем приложении есть users
. У каждого пользователя может быть много друзей (других пользователей). Если пользователь A имеет друга B, тогда пользователь B имеет друга A - всегда. Мне придется запросить коллекцию пользователей, чтобы, например, получить всех друзей пользователя A. И мне придется также использовать геопространственный индекс для этого запроса, чтобы получить всех друзей пользователя A в данном радиусе от пользователя A.Как смоделировать recurency и hasMany отношения в MongoDB?
У меня есть некоторые проблемы при попытке «моделировать» эту структуру в MongoDB. Теперь у меня есть это (в Мангусте):
{
created: { type: Date, default: Date.now },
phone_number: { type: String, unique: true },
location: { type: [Number], index: '2dsphere' },
friends: [{ phone_number: String }]
}
Таким образом, каждый пользователь содержит множество других пользователей телефонных номеров (номер телефона идентифицирует каждый пользователь). Но я не думаю, что это хорошая идея, поскольку у одного пользователя может быть ноль или много друзей, поэтому массив друзей будет изменяться и может значительно увеличиться.
Что будет лучшим вариантом моделирования этой структуры?
Хм, если я предположим, что у каждого пользователя может быть до 1000 друзей, тогда я лучше использую Массивы для каждого пользователя? – user606521
Но формат массивов имеет ошибку, что вы не можете хранить дополнительную информацию о дружбе. Это может быть проблемой. –
Не совсем, вы всегда можете хранить объекты (встроенные документы) в массиве, содержащем метаданные дружбы. –