
Владислав
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()

Mikhail
16.07.2018
14:39:47

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 сгруппируются, а в случает сравнения объектов - нет

Nan0
16.07.2018
15:33:33

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

Yurii
17.07.2018
16:04:06

invzbl3
17.07.2018
16:05:48

Yurii
17.07.2018
16:07:03

invzbl3
17.07.2018
16:07:18

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

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" - это из старой версии?
Спасибо :)

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
а далее с этой переменной сравнить