Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / NoSQL, Big Data Новый топик    Ответить
 Помогите составить запрос для Robomongo  [new]
Alibek B.
Member

Откуда:
Сообщений: 3189
Помогите составить запрос, чтобы отобрать и отобразить определенные данные.
Есть коллекция Groups, состоящая из следующих полей:
{
    "_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, которая имеет следующий вид:
{
    "_id" : LUUID("d6190821-f197-d94d-8403-708ad86f0c51"),
    "channelName" : "CAM-103",
    ...
    "commonConnectionSettings" : {
        "ipAddress" : "10.102.1.3",
    },
}

Мне нужно отобрать записи с определенным ownerDomainId и отобразить для них поля groupName, channelName и ipAddress.
С первой частью я сделал так:

function LUUID(uuid) { return new UUID(uuid.replace(/[{}-]/g, "")); }
db.Groups.find({ownerDomainId: LUUID("0f8af6de-2411-c147-825b-613344769438")})

А как бы мне теперь отобразить не идентификаторы, а значения по ссылке?
Другими словами, мне нужен эквивалент такого SQL-запроса:
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"
2 июл 18, 13:42    [21536604]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос для Robomongo  [new]
Eleanor
Member

Откуда:
Сообщений: 2319
Как-то так
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

Не запускала, как работает.
2 июл 18, 23:33    [21538100]     Ответить | Цитировать Сообщить модератору
Все форумы / NoSQL, Big Data Ответить