V
ребят а напомните какой exporter для монго стоит использовать ?
Іван 🤙
Ребятки прувеет!))
Подскажите пожалуйста, я хочу узнать есть ли поле "comments" в определенном документе ("_id":"11111")
Делаю такой запрос:
db.tasks.find({"_id":task_id},{"comments":{"$exists":True}})
приходит ошибка:
Unsupported projection option: comments: { $exists: true }
"$exists":True - ищет по всем документам
Как сделать if exist для определенного документа?
Спасибо)
yopp
yopp
По-умолчанию условия в запросе объединяются через логическое И
yopp
Вы ищите документ в котором id равен Y «И» поле существует
yopp
Да
Іван 🤙
Да
странно, выдало вообще не понятный результат😂
список [{'_id': '44444'}, {'_id': '33333'}, {'_id': '55555'}, {'_id': '22222'}]
yopp
А, вы опять два хеша передаёте
yopp
.find({"comments":{"$exists":True}, "_id":task_id})
yopp
Первый аргумент запрос, второй аргумент фильтр полей
Іван 🤙
Oleg
Oleg
yopp
Если запрос с датами, то последний
Oleg
yopp
Если вы выборки по нему не делаете, то нет
Oleg
yopp
Протестируйте несколько вариантов: compound index по трёх полям и два индекса: compound по operation и cred.rand плюс индекс по дате
yopp
Пустой список наиболее логичное представление пустого ответа для питона. Но с тем как дальше обрабатывать результаты в питоне вам а группу по питону
yopp
В питоне вероятно есть какой-то метод проверки пустоты списка
Іван 🤙
yopp
https://www.pythoncentral.io/how-to-check-if-a-list-tuple-or-dictionary-is-empty-in-python/
Stepan
Mongoose?
Stepan
http://mongoosejs.com/docs/api.html#document_Document-markModified
ᅠ ᅠ ᅠ ᅠ
ребят, такой вопрос: используя aggregation framework нужно придерживаться какого-то определенного порядка $unwind,$project и тд. или можно прописывать запросы по личному удобству?
ᅠ ᅠ ᅠ ᅠ
понял, спасибо)
ᅠ ᅠ ᅠ ᅠ
За большую базу рекомендую почитать про реализацию GridFS. В документах MongoDB можно хранить бинарные данные — картинки, mp3 и так далее. Для данных размером более 1 Мб рекомендуется использовать GridFS. GridFS — это соглашение о хранении файлов произвольного размера в MongoDB, поддерживаемое всеми официальными драйверами.
vitalii
Art
Всем привет! Подскажите, пожалуйста:
Есть полигоны городов, внутри них точки ресторанов. Выбираем по _id ресторан. Как-то можно узнать с помощью запроса, что ресторан находится в городе N ? Или это нужно связь parent-child создавать?
yopp
Т.е. вы хотите по координатам ресторана получить его город?
Art
yopp
Всё верно
Геопоиск это дорогая операция. На мой взгляд лучше сразу при получении координат кешировать указатель на город.
В остальном: вам нужен reverse geocoding. Создайте коллекцию, где каждый документ город с полигоном, отписывающим его границы. Дальше по координате ресторна запрашивайте с помощью geoWithin, в какой из полигонов попадает ресторан.
yopp
Или через geoIntersects
Art
Геопоиск это дорогая операция. На мой взгляд лучше сразу при получении координат кешировать указатель на город.
Вы имели ввиду следующее: выбрать все рестораны внутри полигона города N и проставить им parent: _id города?
Art
Ну то есть, мне сейчас надо пройтись по всем городам, выбрать у каждого города рестораны и в каждый документ ресторана добавить строку parent: _id города (тем самым создав связь с родительским объектом).
Или всё-таки не так?
Art
Ну вроде понял. Спасибо)
Игорь
Подскажите пожалуйста как в nosql сделать грамотно модель данных для примерно такой задачи: будет документ заказа, в нем необходимые позиции товара. И другие пользователи должны будут предлагать свои варианты по этому заказу. Соответственно потом будет формироваться окончательный заказ исходя из предложенных вариантов. Я не прошу за меня все тут расписывать, но был бы признателен если на словах объясните приблизительную организацию документов. Опыта в монге нет, и похожих задач не видел а наговнякать не хотелось бы. Заранее спасибо
Dmitry
Nick
Игорь
Игорь
Nick
тогда советовал бы просто реализовать в лоб как понимается, чем больше граблей встретите тем проще будет проектировать в будущем
Владислав
Всем привет, работаю с 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
Ну навскидку тоже так думаю
Ну и главное заранее подумать какие индексы нужны и как они будут работать с конкретной моделью. Я массивы не индексировал ещё, хз...по идее может быть не очень удобно обновлять их, или сортировать...короче все зависит от требований...
Игорь
Alexey
парни, здорова)
подскажите, почему 29 строка вызывает ошибку?
я вроде нагуглил тот вариант, что такая ошибка бывает, когда закрывешь базу перед тем, как выполнить операцию с бд, но у меня же метод close вызывается в колбеке метода, значит должен выполняться тогда, когда inserrt уже выполнится
Alexey
Nick
только сразу предостерегаю - в монге нет констрейнтов, если вы привыкли их использовать в sql, и как следствие можно без труда удалить все товары, но идшиники на них из заказов не исчезнут, т.е. монга не будет контролировать целостность данных
Михаил Макарычев
А покажите объявление переменной db
Михаил Макарычев
И вообще вы что-то делаете не так, раз закрываете соединение с базой после запроса
Nick
Nick
нет ошибки
Nick
с точки зрения драйвера и монги все корректно, т.е. это пробелмы бизнес логики, а значит это вы долнжы сами отлавливать
Владислав
Те, мне придется отдельно запускать проверки?
Alexey
Alexey
Nick
типа да, мол пришло нулл и нулл значит ничего не нашлось. а должно было? да - ошибка, не обязательно - все ок
Nick
обычная бизнес логика
Alexey
в каких случаях соединение вообще закрывать надо? я думал - сделал запрос - получил ответ - закрыл соединение
Nick
не нужно закрывать
Nick
вы один раз взяли коннект и всю жизнь с ним живете до остановки
Nick
максимум драйвер вам переподключит если сильно надо
Nick
и да закрывать db не получится, надо клиента закрывать
Михаил Макарычев
Очень странно. А db.open не надо делать?
Nick
после подключения клиента уже установелн коннект
Nick
зачем там опен?
Владислав
Благодарю
Владислав
типа да, мол пришло нулл и нулл значит ничего не нашлось. а должно было? да - ошибка, не обязательно - все ок
Владислав
обычная бизнес логика
Alexey
хорошо, всем спасибо)
Nick
Очень странно. А db.open не надо делать?
вы наверняка про
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
// we're connected!
});
но это нужно когда мы не передаем колбек в .connect()
Михаил Макарычев
Nick
к нативному в описании open применяется к самому клиенту, а базу у клиента уже берется как обычно без всяких опен
Nick
// Open the connection to the server
mongoclient.open(function(err, mongoclient) {
// Get the first db and do an update document on it
var db = mongoclient.db("integration_tests");