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

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

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

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

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

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

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

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

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

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

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

Не исключено, что под сложным запросом Вы и ТС подразумеваете разные вещи.
Кому-то два джоина - уже сложный запрос.
...
Рейтинг: 0 / 0
У какой свободной NoSQL самый человеческий язык запросов?
    #39596576
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
У какой свободной NoSQL самый человеческий язык запросов?
    #39596613
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом
Код: 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
У какой свободной NoSQL самый человеческий язык запросов?
    #39596663
Alexey Tomin
1. Почитайте тут . Это сразу сократит запрос.
2. Получение текущего пользователя/рои логично вынести в отдельный метод.
3. И запрос (без текущего) становится прост, а заджойнить с текущим можно в памяти.

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

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

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

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

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

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

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

Код: 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
У какой свободной NoSQL самый человеческий язык запросов?
    #39597200
Фотография 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
У какой свободной NoSQL самый человеческий язык запросов?
    #39597577
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominМне это видится настолько очевидным, что даже лень писать. Ну да ладно.

Вы имеете ввиду - разбить "сложный" запрос на части, а потом собрать его в один объект?
...
Рейтинг: 0 / 0
У какой свободной NoSQL самый человеческий язык запросов?
    #39597583
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
У какой свободной NoSQL самый человеческий язык запросов?
    #39597584
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
У какой свободной NoSQL самый человеческий язык запросов?
    #39597588
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем нужен mongoose?

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

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

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

Так что в чем тут подход sql - решительно неясно.
...
Рейтинг: 0 / 0
У какой свободной NoSQL самый человеческий язык запросов?
    #39597824
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Документация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
У какой свободной NoSQL самый человеческий язык запросов?
    #39597839
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомЧеловеческий это:

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
У какой свободной NoSQL самый человеческий язык запросов?
    #39597840
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterПоэтому ничего соединять не нужно в принципе.

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

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

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


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