Гость
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / У какой свободной NoSQL самый человеческий язык запросов? / 25 сообщений из 27, страница 1 из 2
03.02.2018, 23:32
    #39596229
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
Человеческий это:

1. Похожий на SQL
или
2. LINQ-подобный
3. Возможно с конструктором.

В монге пока не самый сложный запрос наваяешь (а это отформатированного текста на экран) - упаришься, да и на него просто глядеть страшно, не то что запускать.
...
Рейтинг: 0 / 0
03.02.2018, 23:33
    #39596231
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
Каждый запрос в монге делается с докой под рукой и высунутым языком.
...
Рейтинг: 0 / 0
04.02.2018, 13:29
    #39596305
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
Агнец за бортомЧеловеческий это:

1. Похожий на SQL
или
2. LINQ-подобный
3. Возможно с конструктором.

В монге пока не самый сложный запрос наваяешь (а это отформатированного текста на экран) - упаришься, да и на него просто глядеть страшно, не то что запускать.

NoSQL и сложные запросы- малосовместимые понятия. Просто по-определению.
...
Рейтинг: 0 / 0
04.02.2018, 20:34
    #39596446
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
Alexey TominАгнец за бортомЧеловеческий это:

1. Похожий на SQL
или
2. LINQ-подобный
3. Возможно с конструктором.

В монге пока не самый сложный запрос наваяешь (а это отформатированного текста на экран) - упаришься, да и на него просто глядеть страшно, не то что запускать.

NoSQL и сложные запросы- малосовместимые понятия. Просто по-определению.

Выборка есть выборка. То, что на LINQ размещается в строчке - JS-объект занимает весь экран.
...
Рейтинг: 0 / 0
05.02.2018, 09:33
    #39596556
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
Агнец за бортомКаждый запрос в монге делается с докой под рукой и высунутым языком.

Да ладно, с времен появления aggregation framework - все не так уж плохо.
...
Рейтинг: 0 / 0
05.02.2018, 09:35
    #39596557
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
Alexey TominNoSQL и сложные запросы- малосовместимые понятия. Просто по-определению.

Не исключено, что под сложным запросом Вы и ТС подразумеваете разные вещи.
Кому-то два джоина - уже сложный запрос.
...
Рейтинг: 0 / 0
05.02.2018, 10:06
    #39596576
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
   let filter = {
                $or: [{
                    $and: [{
                            $or: [{
                                    readAccess: {
                                        $exists: false
                                    }
                                },
                                {
                                    readAccess: {
                                        $size: 0
                                    }
                                }
                            ]
                        },
                        {
                            $or: [{
                                    readAccessRole: {
                                        $exists: false
                                    }
                                },
                                {
                                    readAccessRole: {
                                        $size: 0
                                    }
                                }
                            ],
                        }
                    ]
                }, {
                    $or: [{
                            'readAccess._id': currentUser._id
                        },
                        {
                            readAccessRole: {
                                $in: roleIDs
                            }
                        }
                    ]
                }]
            }



Вот это - я называю сложным. Сложный - занимает много места - решаемая задача - примитивная.
...
Рейтинг: 0 / 0
05.02.2018, 11:12
    #39596613
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
Агнец за бортом
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
   let filter = {
                $or: [{
                    $and: [{
                            $or: [{
                                    readAccess: {
                                        $exists: false
                                    }
                                },
                                {
                                    readAccess: {
                                        $size: 0
                                    }
                                }
                            ]
                        },
                        {
                            $or: [{
                                    readAccessRole: {
                                        $exists: false
                                    }
                                },
                                {
                                    readAccessRole: {
                                        $size: 0
                                    }
                                }
                            ],
                        }
                    ]
                }, {
                    $or: [{
                            'readAccess._id': currentUser._id
                        },
                        {
                            readAccessRole: {
                                $in: roleIDs
                            }
                        }
                    ]
                }]
            }




Вот это - я называю сложным. Сложный - занимает много места - решаемая задача - примитивная.

1. Почитайте тут . Это сразу сократит запрос.
2. Получение текущего пользователя/рои логично вынести в отдельный метод.
3. И запрос (без текущего) становится прост, а заджойнить с текущим можно в памяти.
...
Рейтинг: 0 / 0
05.02.2018, 12:23
    #39596663
У какой свободной NoSQL самый человеческий язык запросов?
Alexey Tomin
1. Почитайте тут . Это сразу сократит запрос.
2. Получение текущего пользователя/рои логично вынести в отдельный метод.
3. И запрос (без текущего) становится прост, а заджойнить с текущим можно в памяти.

1. Почитайте тут . Это сразу сократит запрос.
Спасибо. Но $exists я тоже не сам придумал - взято из той же доки. Еще один камень в сторону монги - куча методов на одни и те же по смыслу операции.

2. Получение текущего пользователя/рои логично вынести в отдельный метод.
3. И запрос (без текущего) становится прост, а заджойнить с текущим можно в памяти
Вот этого вообще не понял.

Пользователь - это залогиненный юзер, берется в сессии. И запросом получает объекты, что доля него предназначены.
Вы предлагаете вытащить ВСЕ объекты из базы и отфильтровать их уже в приложении?
...
Рейтинг: 0 / 0
05.02.2018, 12:30
    #39596674
haXbat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
Агнец за бортом,

HBase + Phoenix / Drill для человеческого SQL
...
Рейтинг: 0 / 0
05.02.2018, 12:33
    #39596675
У какой свободной NoSQL самый человеческий язык запросов?
haXbatАгнец за бортом,

HBase + Phoenix / Drill для человеческого SQL

Ух ты сколько новых слов))
...
Рейтинг: 0 / 0
05.02.2018, 17:51
    #39596997
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
Ну так что там про текущего пользователя в отдельном методе?
...
Рейтинг: 0 / 0
06.02.2018, 07:57
    #39597199
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
Агнец за бортомНу так что там про текущего пользователя в отдельном методе?

Мне это видится настолько очевидным, что даже лень писать. Ну да ладно.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
let current_user = {$or: [{
                            'readAccess._id': currentUser._id
                        },
                        {
                            readAccessRole: {
                                $in: roleIDs
                            }
                        }
                    ]}



Вынести в отдельный метод и далее результат addAll добавить к другому резальтату.
Не надо слепо копировать подход sql к noSQL
...
Рейтинг: 0 / 0
06.02.2018, 07:59
    #39597200
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
ИМХО схему стоит переделать и всё станет гораздо проще.

Как-то так, если я правильно понял логику:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
let filter = {
  $or: [
    { 'readAccess': { $exists: false } },
    { 'readAccess.users': { $in: currentUser._id } },
    { 'readAccess.roles': { $in: roleIDs } }
  ]
}
...
Рейтинг: 0 / 0
06.02.2018, 16:31
    #39597577
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
Alexey TominМне это видится настолько очевидным, что даже лень писать. Ну да ладно.

Вы имеете ввиду - разбить "сложный" запрос на части, а потом собрать его в один объект?
...
Рейтинг: 0 / 0
06.02.2018, 16:37
    #39597583
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
skyANAИМХО схему стоит переделать и всё станет гораздо проще.

Как-то так, если я правильно понял логику:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
let filter = {
  $or: [
    { 'readAccess': { $exists: false } },
    { 'readAccess.users': { $in: currentUser._id } },
    { 'readAccess.roles': { $in: roleIDs } }
  ]
}



Не совсем.

Условие истинно, когда:
1. Полей ограничивающих доступ нет вообще.
или
2. Поля, ограничивающие доступ есть, но в массиве ничего нет.
или
3. Либо пользователь, либо его роль входят в одно из полей.

И условие НЕ истинно когда:
1. Когда хоть в одном из полей ограничивающие доступ "что-то есть"
и
2. Это не пользователь или его роль.
...
Рейтинг: 0 / 0
06.02.2018, 16:38
    #39597584
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
skyANAИМХО схему стоит переделать и всё станет гораздо проще.

Как-то так, если я правильно понял логику:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
let filter = {
  $or: [
    { 'readAccess': { $exists: false } },
    { 'readAccess.users': { $in: currentUser._id } },
    { 'readAccess.roles': { $in: roleIDs } }
  ]
}



Вообще да, добавить просто еще одно условие. Почему у меня тогда такая драндула получилась...
...
Рейтинг: 0 / 0
06.02.2018, 16:41
    #39597588
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
Зачем нужен mongoose?

Чтобы гарантировать наличие как-то полей, и не проверять их при запросе?
...
Рейтинг: 0 / 0
06.02.2018, 16:44
    #39597592
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
Агнец за бортомskyANAИМХО схему стоит переделать и всё станет гораздо проще.

Как-то так, если я правильно понял логику:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
let filter = {
  $or: [
    { 'readAccess': { $exists: false } },
    { 'readAccess.users': { $in: currentUser._id } },
    { 'readAccess.roles': { $in: roleIDs } }
  ]
}




Вообще да, добавить просто еще одно условие. Почему у меня тогда такая драндула получилась...

Вообще, если еще проверять существование коллекций users и roles, и учесть, что одно может сущестовать без другого, и проверять на пустоту их содержимое, да еще и отформатировать результат - получится то же самое, что и у меня.
...
Рейтинг: 0 / 0
06.02.2018, 16:45
    #39597593
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
skyANAИМХО схему стоит переделать

У меня нет схем.
...
Рейтинг: 0 / 0
06.02.2018, 16:59
    #39597604
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
Alexey Tomin
Вынести в отдельный метод и далее результат addAll добавить к другому резальтату.
Не надо слепо копировать подход sql к noSQL

Конкатенацией вполне себе и sql-ные тексты запросов составляются. Читаемость от этого не повышается вообще, да и пялиться приходится в итоге в результирующую кашу.

Так что в чем тут подход sql - решительно неясно.
...
Рейтинг: 0 / 0
06.02.2018, 23:41
    #39597824
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
ДокументацияInteraction with Projection
When a set of results are both sorted and projected, the MongoDB query engine will always apply the sorting first..

Ну ваще красота. Подводные камни на каждом шагу. 15 документов, по метру каждый (в виде файла) - не могу отсортировать - выбивает по памяти.

На каждый шаг надо лазать в доку.
...
Рейтинг: 0 / 0
07.02.2018, 01:57
    #39597839
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
Агнец за бортомЧеловеческий это:

1. Похожий на SQL
или
2. LINQ-подобный
3. Возможно с конструктором.

В монге пока не самый сложный запрос наваяешь (а это отформатированного текста на экран) - упаришься, да и на него просто глядеть страшно, не то что запускать.NoSQL это документоориентированная база, где все все атрибуты собраны вместе. Поэтому ничего соединять не нужно в принципе.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
var mydoc = {
               _id: ObjectId("5099803df3f4948bd2f98391"),
               name: { first: "Alan", last: "Turing" },
               birth: new Date('Jun 23, 1912'),
               death: new Date('Jun 07, 1954'),
               contribs: [ "Turing machine", "Turing test", "Turingery" ],
               views : NumberLong(1250000)
            }

...
Рейтинг: 0 / 0
07.02.2018, 02:00
    #39597840
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
Relic HunterПоэтому ничего соединять не нужно в принципе.

Ну супер, спасибо, а кто собирался?
...
Рейтинг: 0 / 0
07.02.2018, 02:41
    #39597845
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У какой свободной NoSQL самый человеческий язык запросов?
Агнец за бортом,

Для монги есть LINQ драйвер. Или об чем вопрос?

http://mongodb.github.io/mongo-csharp-driver/1.11/linq/
...
Рейтинг: 0 / 0
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / У какой свободной NoSQL самый человеческий язык запросов? / 25 сообщений из 27, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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