@MongoDBRussian

Страница 271 из 342
Владислав
16.07.2018
14:31:09
Те, мне придется отдельно запускать проверки?

Alex
16.07.2018
14:31:39
И вообще вы что-то делаете не так, раз закрываете соединение с базой после запроса
более чем вероятно) я пока просто играюсь, а тут смотрю ошибка



Nick
16.07.2018
14:32:08
типа да, мол пришло нулл и нулл значит ничего не нашлось. а должно было? да - ошибка, не обязательно - все ок

Google
Nick
16.07.2018
14:32:15
обычная бизнес логика

Alex
16.07.2018
14:32:45
в каких случаях соединение вообще закрывать надо? я думал - сделал запрос - получил ответ - закрыл соединение

Nick
16.07.2018
14:33:12
не нужно закрывать

вы один раз взяли коннект и всю жизнь с ним живете до остановки

максимум драйвер вам переподключит если сильно надо

Mikhail
16.07.2018
14:34:16
в каких случаях соединение вообще закрывать надо? я думал - сделал запрос - получил ответ - закрыл соединение
Если речь о нативном драйвере, то там автоматически создаётся пул соединений. И выходит, что вы на каждый запрос создаёте пул, а потом тут же его убиваете. Это бессмысленно.

Nick
16.07.2018
14:34:22
и да закрывать db не получится, надо клиента закрывать

Mikhail
16.07.2018
14:34:39
Очень странно. А db.open не надо делать?

Nick
16.07.2018
14:37:03
после подключения клиента уже установелн коннект

зачем там опен?

Владислав
16.07.2018
14:37:13
Благодарю

типа да, мол пришло нулл и нулл значит ничего не нашлось. а должно было? да - ошибка, не обязательно - все ок

обычная бизнес логика

Google
Alex
16.07.2018
14:38:07
хорошо, всем спасибо)

Nick
16.07.2018
14:39:07
Очень странно. А db.open не надо делать?
вы наверняка про var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function() { // we're connected! }); но это нужно когда мы не передаем колбек в .connect()

Nick
16.07.2018
14:41:46
к нативному в описании open применяется к самому клиенту, а базу у клиента уже берется как обычно без всяких опен

// 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");

ктсати в примерах упоминается db.close();

и да есть аткая дичь: var db = new Db('test', new Server('localhost', 27017)); // Establish connection to db db.open(function(err, db) { assert.equal(null, err); db.on('close', test.done.bind(test)); db.close(); });

хотя лучше не слушайте меня это было про старый драйвер))) и в кновом только монгоклиент можно закрыть

Nan0
16.07.2018
15:25:19
ребят, немного не пойму смысл от применения вложенного id, например с оператором $group: { $group: { _id: "$images_new._id", tags: { $first: "$images_new.tags" } }}

если напишу вместо $images_new._id просто $images_new, то я все равно получаю тот же результат

Nick
16.07.2018
15:28:32
поле _id в group указывает значение для группировки, в вашем случае какждый объект походу уникален и вы не видите разницы, на самом деле под какпотом указывая images_new._id идет группирвоака по значению этого поля. А когда сам images_new, то сравниваются объекты на равенство

т.е. { _id:1 f1:1 } и { _id:1 f1:2 } по _id сгруппируются, а в случает сравнения объектов - нет

invzbl3
17.07.2018
15:46:24
кто-то создавал бесплатный sandbox на mlab для хранения mongodb бд? не знаете, там 1 такой можно бесплатный держать или несколько? пробовал уже облачный кластер от монги под java driver, тоже неплох, но не под любую версию удобно подключать и только 1 бесплатный дают

invzbl3
17.07.2018
16:05:48
Только там нет возможности кластера в песочнице
в смысле нет? 1 sandbox бесплатный можно, а несколько таких? я именно бесплатные имею ввиду

Yurii
17.07.2018
16:07:03
в смысле нет? 1 sandbox бесплатный можно, а несколько таких? я именно бесплатные имею ввиду
Да, ты можешь держать несколько бесплатных инстансов по 500 МБ, но они не могут быть в шарде или реплике

Vadim
17.07.2018
16:51:03
Всем привет Можно как-нибудь сделать поле в схеме уникальным и независимым к регистру?! Сейчас только с unique: true qQQ и QQQ и qqq записывает как 3 разные записи

Google
Vadim
17.07.2018
16:51:27
Схема имеется ввиду mongoose :)

Andrew
17.07.2018
17:22:10
// directly without options var Person = new Schema({ title : String }); // or with options var Person = new Schema({ title : { type: String, lowercase: true } });

http://mongoosejs.com/docs/2.7.x/docs/schematypes.html

Vadim
17.07.2018
17:22:54
lowercase: true Ну тогда он и хранится будет в нижнем регистре

А мне нужно хранение как пользователь введет qWeQweR

Daniil
17.07.2018
17:26:26
тольок перед сохранением чекать уникальность

Andrew
17.07.2018
17:26:45
Понял, получается надо хранить как ввел, но при добавлении такого же с другим кэйсом отфильтровывать по уникальности

Угу

Vadim
17.07.2018
17:27:46
db.collection.find({"name_lower": thename.toLowerCase()}) не помогает

db.collection.find( {"name_lower": { $regex: new RegExp("^" + thename.toLowerCase(), "i") } } ); Вообще дичь

Daniil
17.07.2018
17:28:43
ну не дичь у тебя частный случай просто

вообще можешь хранить юник значение в ловеркейсе и оригинал вместе))

но это костыль

Vadim
17.07.2018
17:29:09
Легкий путь :)

Зато надежный на 1000%

Andrew
17.07.2018
17:29:46
A case insensitive index если?

https://docs.mongodb.com/manual/core/index-case-insensitive/

Vadim
17.07.2018
17:30:15
db.collection.find( {"name_lower": { $regex: new RegExp("^" + thename.toLowerCase(), "i") } } ); Вообще дичь
Есть имя 'ppp' при попытке ввести 'pp' пишет что есть такое имя Или я просто с регулярками не разобрался или так будет всегда?!

Andrew
17.07.2018
17:31:12
Я вообще не понял зачем там регулярка) оба в один кейс переводи и все

Google
Vadim
17.07.2018
17:31:53
В том-то и проблема что не могу оба пеевести

Хз как, весь день на это убил

Andrew
17.07.2018
17:32:18
В переменную запихни в коде выше

Сделай to upper

И в запросе его же

Vadim
17.07.2018
17:32:57
Нет, как в ловер преобразовать уже хранимое в монге значение при поиске?

db.collection.find({"name_lower": thename.toLowerCase()}) ничего не находит и записывает новое zZz ZZZ zzz

Andrew
17.07.2018
17:34:23
Попробуй индекс регистронезависимый с ключем уникальности

Но я не пробовал, может сработает

Ссылку на построение индекса выше кинул

Vadim
17.07.2018
17:36:22
Спасибо, с него всё и начиналось ?

Часов 7-8 назад)))))

Andrew
17.07.2018
17:36:33
Ахах)

Vadim
17.07.2018
17:36:39
Или я ацккий рукожоп

Тоже вариант

Andrew
17.07.2018
17:37:55
Ну тогда через find находишь, db.collection.findOne(условие)[0][fieldname]

И приравняй к переменной

Т.е. вытаскивается запрос как массив, берется нулевое значение из массива, отфильтровывается по полю

В синтаксисе мог немного ошибиться, надо на конкретном примере пробовать

Vadim
17.07.2018
17:40:27
Извиняюсь, но не понял )))

Google
Vadim
17.07.2018
17:40:57
Выдирать всех zz zZZzz zzzzzzz и потом циклом сравнививать со значением переменной?! :)

find({"name_lower" - это из старой версии?

https://docs.mongodb.com/manual/core/index-case-insensitive/
Дело было не в бобине )))) С хз какого раза получилось ))))

Спасибо :)

Andrew
17.07.2018
18:02:58
А я уже в обход скрипт решил запилить)

Ну и отлично

Vadim
17.07.2018
18:03:17
В плане? :)

Я правда locale нифига не понял, но на английском пока рабоатет :)

Andrew
17.07.2018
18:04:10
Ну в плане как что и с чем сравнить в скрипте)

a=db.getCollection('collection').aggregate({$match:{a:/qqq/i}}, {$project:{'a':{$toLower:'$a'}}}, {$group:{_id: '$a' }} ).toArray()[0]["_id"]

Вот такой запрос как я понял. Ищем по регулярке, переводим в lower, группируем по полю, берем первый из массива полученных результатов

типа если было qqq и qQq то запрос выдаст только qqq

а далее с этой переменной сравнить

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