powered by simpleCommunicator - 2.0.28     © 2024 Programmizd 02
Map
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Помогите составить запрос для Robomongo
2 сообщений из 2, страница 1 из 1
Помогите составить запрос для Robomongo
    #39668305
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите составить запрос, чтобы отобрать и отобразить определенные данные.
Есть коллекция Groups, состоящая из следующих полей:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
{
    "_id" : LUUID("e36539c3-0ada-8b47-ab51-51d650f5a108"),
    "groupName" : "101-0662",
    "ownerDomainId" : LUUID("0f8af6de-2411-c147-825b-613344769438"),
    ...,
    "allowedChannels" : [ 
        LUUID("2db43395-d852-894c-9739-558479dcbe0b")
    ],
}


Массив allowedChannels содержит идентификаторы из коллекции Channels, которая имеет следующий вид:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
{
    "_id" : LUUID("d6190821-f197-d94d-8403-708ad86f0c51"),
    "channelName" : "CAM-103",
    ...
    "commonConnectionSettings" : {
        "ipAddress" : "10.102.1.3",
    },
}


Мне нужно отобрать записи с определенным ownerDomainId и отобразить для них поля groupName, channelName и ipAddress.
С первой частью я сделал так:
Код: plaintext
1.
2.
function LUUID(uuid) { return new UUID(uuid.replace(/[{}-]/g, "")); }
db.Groups.find({ownerDomainId: LUUID("0f8af6de-2411-c147-825b-613344769438")})

А как бы мне теперь отобразить не идентификаторы, а значения по ссылке?
Другими словами, мне нужен эквивалент такого SQL-запроса:
Код: sql
1.
2.
3.
4.
select Groups.groupName, Channels.channelName, Channels.commonConnectionSettings_ipAddress
from Groups
join Channels on (Channels._id = Groups.allowedChannels)
where Groups.ownerDomainId = "0f8af6de-2411-c147-825b-613344769438"
...
Рейтинг: 0 / 0
Помогите составить запрос для Robomongo
    #39668556
Eleanor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так
Код: javascript
1.
2.
3.
4.
5.
6.
db.Groups.find({ownerDomainId: LUUID("0f8af6de-2411-c147-825b-613344769438")}).forEach(function(Group) {
var Channel = db.Channels.find({_id: Group.allowedChannels}, {"_id": 0, "channelName": 1, "commonConnectionSettings.ipAddress": 1}).toArray();
if (Channel.length > 0) {
FinalResult.push({"groupName": Group.groupName, "Channel": Channel});}
})
FinalResult


Не запускала, как работает.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Помогите составить запрос для Robomongo
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]