Поиск по коллекциям mongoDB - PullRequest
       3

Поиск по коллекциям mongoDB

0 голосов
/ 01 августа 2011

Запрос: db.user.save ({'user_id': 1603, 'email': 'test@test.com', 'rel': [{'fid': 1604, 's': 0}, { 'FID': 1605, 's': 1}, { 'FID': 1606, 's': 2}]}) Создает коллекцию USER, пишет ей пользователя, у которого есть user_id, адрес электронной почты и REL подколлекции. Внутри подколлекции находятся пара REL FID (идентификатор друга) и S (статус дружбы. Например, 0 - отправлено требование дружбы. 1 - друзья 2. - отказано в дружбе, ...). Другими словами, ID 1603 пользователя подсекции REL представляет собой информацию о том, с кем он дружит, и о состоянии дружбы.

Проблема. Есть пользователь с идентификатором 1606. И нам нужно выяснить, что он имеет дело с идентификатором пользователя 1603.

Для этого сначала найдите пользователя с ID 1603, получите REL db.user.findOne ({'user_id': 1603}, {'rel': true})

Поиск значения FID c 1606 по подгруппе REL обнаружил пользователя с идентификатором 1603. Если такой FID найден, вернитесь к S. Т.е. дружественный статус в 1606 и 1603.

Здесь возникает проблема. Если подскажешь, будет благодарного.

1 Ответ

2 голосов
/ 01 августа 2011

Хорошая новость: возможно, лучший запрос.

db.user.findOne({'user_id': 1603}, {'rel.fid': 1606})

Если это работает, то 1606 - друг 1603.

Примечание:

MongoDB не поддерживает понятие «подколлекции». A database содержит collections, которые содержат documents. Там нет понятия "сбор" там.

В вашем случае у вас есть document, который содержит value типа array. Но MongoDB не имеет никакого типа синтаксиса соединения. Так что это просто «массив ссылок», на самом деле это не «подгруппа», здесь нет ссылочной целостности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...