@MongoDBRussian

Страница 270 из 342
yopp
13.07.2018
12:34:02
Третий сверху покрывает указанный запрос

Oleg
13.07.2018
12:34:51
Третий сверху покрывает указанный запрос
Тогда почему запрос выполняется долго?

yopp
13.07.2018
12:36:21
Вероятнее всего из-за количества документов которые попадают под это конкретное условие

https://docs.mongodb.com/manual/reference/method/db.collection.aggregate/#return-information-on-aggregation-pipeline-operation

Google
yopp
13.07.2018
12:39:38
Учитывая что вы возвращаете только один элемент группы, вы можете уменьшить выборку сделав два запроса: выбрав самую последнюю дату, а потом сделав по ней агрегацию

https://hastebin.com/elarucoguz.bash
А какой версии монга?

Oleg
13.07.2018
12:41:48
yopp
13.07.2018
12:42:50
Попробуйте тот-же самый запрос на девелоперской машине с 3.6. Там больше информации о выполнении агрегационных запросов в explain

А сколько всего документов в коллекции?

У вас, кстати, уже есть даже индекс с created at. Так что лучше сначала найти максимальную дату, а потом уже по ней агрегировать. Меньше данных в выборке, быстрее будет.

Можно ещё убрать project

Положив конверсию даты в group

Но это надо проверять,возможно сокращение размера документа до групиовки тут помогает

M
13.07.2018
12:46:30
ребят а напомните какой exporter для монго стоит использовать ?

Иван
13.07.2018
13:09:07
Ребятки прувеет!)) Подскажите пожалуйста, я хочу узнать есть ли поле "comments" в определенном документе ("_id":"11111") Делаю такой запрос: db.tasks.find({"_id":task_id},{"comments":{"$exists":True}}) приходит ошибка: Unsupported projection option: comments: { $exists: true } "$exists":True - ищет по всем документам Как сделать if exist для определенного документа? Спасибо)

Google
yopp
13.07.2018
13:11:50
По-умолчанию условия в запросе объединяются через логическое И

Иван
13.07.2018
13:12:26
Перенесите условие по comments в первый хеш
.find({"comments":{"$exists":True}},{"_id":task_id}) так?

yopp
13.07.2018
13:12:28
Вы ищите документ в котором id равен Y «И» поле существует

Да

Иван
13.07.2018
13:14:20
Да
странно, выдало вообще не понятный результат? список [{'_id': '44444'}, {'_id': '33333'}, {'_id': '55555'}, {'_id': '22222'}]

yopp
13.07.2018
13:14:53
А, вы опять два хеша передаёте

.find({"comments":{"$exists":True}, "_id":task_id})

Первый аргумент запрос, второй аргумент фильтр полей

Иван
13.07.2018
13:17:52
yopp
13.07.2018
13:27:22
Если запрос с датами, то последний

Oleg
13.07.2018
13:28:24
yopp
13.07.2018
13:28:34
Если вы выборки по нему не делаете, то нет

yopp
13.07.2018
13:30:12
Протестируйте несколько вариантов: compound index по трёх полям и два индекса: compound по operation и cred.rand плюс индекс по дате

yopp
13.07.2018
13:34:04
Пустой список наиболее логичное представление пустого ответа для питона. Но с тем как дальше обрабатывать результаты в питоне вам а группу по питону

В питоне вероятно есть какой-то метод проверки пустоты списка

Google
yopp
13.07.2018
13:37:12
https://www.pythoncentral.io/how-to-check-if-a-list-tuple-or-dictionary-is-empty-in-python/

Stepan
13.07.2018
16:21:53
Mongoose?

http://mongoosejs.com/docs/api.html#document_Document-markModified

invzbl3
13.07.2018
19:52:29
ребят, такой вопрос: используя aggregation framework нужно придерживаться какого-то определенного порядка $unwind,$project и тд. или можно прописывать запросы по личному удобству?

понял, спасибо)

За большую базу рекомендую почитать про реализацию GridFS. В документах MongoDB можно хранить бинарные данные — картинки, mp3 и так далее. Для данных размером более 1 Мб рекомендуется использовать GridFS. GridFS — это соглашение о хранении файлов произвольного размера в MongoDB, поддерживаемое всеми официальными драйверами.

Artyom
16.07.2018
10:57:35
Всем привет! Подскажите, пожалуйста: Есть полигоны городов, внутри них точки ресторанов. Выбираем по _id ресторан. Как-то можно узнать с помощью запроса, что ресторан находится в городе N ? Или это нужно связь parent-child создавать?

yopp
16.07.2018
10:59:09
Т.е. вы хотите по координатам ресторана получить его город?

yopp
16.07.2018
11:06:42
Всё верно
Геопоиск это дорогая операция. На мой взгляд лучше сразу при получении координат кешировать указатель на город. В остальном: вам нужен reverse geocoding. Создайте коллекцию, где каждый документ город с полигоном, отписывающим его границы. Дальше по координате ресторна запрашивайте с помощью geoWithin, в какой из полигонов попадает ресторан.

Или через geoIntersects

Artyom
16.07.2018
11:14:39
Геопоиск это дорогая операция. На мой взгляд лучше сразу при получении координат кешировать указатель на город. Вы имели ввиду следующее: выбрать все рестораны внутри полигона города N и проставить им parent: _id города?

Ну то есть, мне сейчас надо пройтись по всем городам, выбрать у каждого города рестораны и в каждый документ ресторана добавить строку parent: _id города (тем самым создав связь с родительским объектом). Или всё-таки не так?

Ну вроде понял. Спасибо)

Игорь
16.07.2018
13:15:29
Подскажите пожалуйста как в nosql сделать грамотно модель данных для примерно такой задачи: будет документ заказа, в нем необходимые позиции товара. И другие пользователи должны будут предлагать свои варианты по этому заказу. Соответственно потом будет формироваться окончательный заказ исходя из предложенных вариантов. Я не прошу за меня все тут расписывать, но был бы признателен если на словах объясните приблизительную организацию документов. Опыта в монге нет, и похожих задач не видел а наговнякать не хотелось бы. Заранее спасибо

Dmitry
16.07.2018
13:54:05
Подскажите пожалуйста как в nosql сделать грамотно модель данных для примерно такой задачи: будет документ заказа, в нем необходимые позиции товара. И другие пользователи должны будут предлагать свои варианты по этому заказу. Соответственно потом будет формироваться окончательный заказ исходя из предложенных вариантов. Я не прошу за меня все тут расписывать, но был бы признателен если на словах объясните приблизительную организацию документов. Опыта в монге нет, и похожих задач не видел а наговнякать не хотелось бы. Заранее спасибо
В оф. документации есть подробное описание самых ходовых способов организации документов с примерами «правильного» применения. В конкретном случае я бы наверное сделал 2 коллекции: заказы и товары. Заказ - документ с массивом id товаров + поля для описания. Ну а товар - документ с нужными полями. Но это если думать 3 секунды. Дьявол в деталях.

Google
Nick
16.07.2018
14:08:38
тогда советовал бы просто реализовать в лоб как понимается, чем больше граблей встретите тем проще будет проектировать в будущем

Владислав
16.07.2018
14:10:23
Всем привет, работаю с mongodb через асинхронный драйвер у меня при возникновении ошибки singleresultcallback не генерирует никаких ошибок https://gist.github.com/eltgm/4df959ff0e7f42aa7e8b471d5238c831 вот пример у меня приходит не валидный фильтр accountFilter(по этому фильтру он не найдёт необходимый документ), в onError мне нужно вывести ошибку как это сделать или что исправить, чтоб мне приходила ошибка? пытался гуглить это, не получилось

вот из документации The MongoDB Asynchronous Driver API mirrors the new Synchronous MongoDB Driver API, but asynchronous methods that make network I/O operations take a SingleResultCallback<T> and return immediately. The SingleResultCallback<T> interface requires the implementation of a single method onResult(T result, Throwable t) which is called upon the completion of the operation. Upon successful operation, the result parameter contains the result of the operation. If the operation failed for any reason, then the t contains the reason for the failure. If the operation failed for any reason, then the t contains the reason for the failure. причина ошибки, в моём случае, отсутствие документа, удовлетворяющего заданному фильтру но мне приходит result null и t null

mongodb-async-java

Dmitry
16.07.2018
14:12:01
Ну навскидку тоже так думаю
Ну и главное заранее подумать какие индексы нужны и как они будут работать с конкретной моделью. Я массивы не индексировал ещё, хз...по идее может быть не очень удобно обновлять их, или сортировать...короче все зависит от требований...

Игорь
16.07.2018
14:19:04
тогда советовал бы просто реализовать в лоб как понимается, чем больше граблей встретите тем проще будет проектировать в будущем
Отчасти да, но на это обычно больше уходит время. Хотя да, согласен, понимания будет больше

Alex
16.07.2018
14:19:16
парни, здорова) подскажите, почему 29 строка вызывает ошибку? я вроде нагуглил тот вариант, что такая ошибка бывает, когда закрывешь базу перед тем, как выполнить операцию с бд, но у меня же метод close вызывается в колбеке метода, значит должен выполняться тогда, когда inserrt уже выполнится



Nick
16.07.2018
14:22:03
Отчасти да, но на это обычно больше уходит время. Хотя да, согласен, понимания будет больше
просто одно дело начать разбираться спотыкаясь на базовых вещах, чем сделав все по инструкции потом пытатсья в это въехать. В вашем случае пока что все видится как обычная плоская модель юзер-заказ-товары, где у заказа массив и в нем id-шники товаров (вероятно с суммой и видами действующих акций на момент прикрепления товара к заказу)

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

Mikhail
16.07.2018
14:24:56
А покажите объявление переменной db

И вообще вы что-то делаете не так, раз закрываете соединение с базой после запроса

Страница 270 из 342