Nick
ктсати в примерах упоминается
db.close();
Nick
и да есть аткая дичь:
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();
});
Nick
хотя лучше не слушайте меня это было про старый драйвер))) и в кновом только монгоклиент можно закрыть
Nan0
ребят, немного не пойму смысл от применения вложенного id, например с оператором $group:
{ $group: { _id: "$images_new._id", tags: { $first: "$images_new.tags" } }}
Nan0
если напишу вместо $images_new._id просто $images_new, то я все равно получаю тот же результат
Nick
поле _id в group указывает значение для группировки, в вашем случае какждый объект походу уникален и вы не видите разницы, на самом деле под какпотом указывая images_new._id идет группирвоака по значению этого поля. А когда сам images_new, то сравниваются объекты на равенство
Nick
т.е.
{
_id:1
f1:1
}
и
{
_id:1
f1:2
}
по _id сгруппируются, а в случает сравнения объектов - нет
Nan0
ᅠ ᅠ ᅠ ᅠ
кто-то создавал бесплатный sandbox на mlab для хранения mongodb бд? не знаете, там 1 такой можно бесплатный держать или несколько?
пробовал уже облачный кластер от монги под java driver, тоже неплох, но не под любую версию удобно подключать и только 1 бесплатный дают
Yurii
Yurii
ᅠ ᅠ ᅠ ᅠ
Евкакий
Всем привет
Можно как-нибудь сделать поле в схеме уникальным и независимым к регистру?!
Сейчас только с unique: true qQQ и QQQ и qqq записывает как 3 разные записи
Евкакий
Схема имеется ввиду mongoose :)
Andrew
// directly without options var Person = new Schema({ title : String }); // or with options var Person = new Schema({ title : { type: String, lowercase: true } });
Andrew
http://mongoosejs.com/docs/2.7.x/docs/schematypes.html
Евкакий
lowercase: true
Ну тогда он и хранится будет в нижнем регистре
Евкакий
А мне нужно хранение как пользователь введет qWeQweR
Daniil
тольок перед сохранением чекать уникальность
Andrew
Понял, получается надо хранить как ввел, но при добавлении такого же с другим кэйсом отфильтровывать по уникальности
Andrew
Угу
Евкакий
Евкакий
db.collection.find({"name_lower": thename.toLowerCase()}) не помогает
Евкакий
db.collection.find( {"name_lower":
{ $regex: new RegExp("^" + thename.toLowerCase(), "i") } }
);
Вообще дичь
Daniil
ну не дичь у тебя частный случай просто
Daniil
вообще можешь хранить юник значение в ловеркейсе и оригинал вместе))
Daniil
но это костыль
Евкакий
Легкий путь :)
Евкакий
Зато надежный на 1000%
Andrew
A case insensitive index если?
Andrew
https://docs.mongodb.com/manual/core/index-case-insensitive/
Andrew
Я вообще не понял зачем там регулярка) оба в один кейс переводи и все
Евкакий
В том-то и проблема что не могу оба пеевести
Евкакий
Хз как, весь день на это убил
Andrew
В переменную запихни в коде выше
Andrew
Сделай to upper
Andrew
И в запросе его же
Евкакий
Нет, как в ловер преобразовать уже хранимое в монге значение при поиске?
Евкакий
db.collection.find({"name_lower": thename.toLowerCase()}) ничего не находит и записывает новое
zZz ZZZ zzz
Andrew
Попробуй индекс регистронезависимый с ключем уникальности
Andrew
Но я не пробовал, может сработает
Andrew
Ссылку на построение индекса выше кинул
Евкакий
Спасибо, с него всё и начиналось 😂
Евкакий
Часов 7-8 назад)))))
Andrew
Ахах)
Евкакий
Или я ацккий рукожоп
Евкакий
Тоже вариант
Andrew
Ну тогда через find находишь, db.collection.findOne(условие)[0][fieldname]
Andrew
И приравняй к переменной
Andrew
Т.е. вытаскивается запрос как массив, берется нулевое значение из массива, отфильтровывается по полю
Andrew
В синтаксисе мог немного ошибиться, надо на конкретном примере пробовать
Евкакий
Извиняюсь, но не понял )))
Евкакий
Выдирать всех zz zZZzz zzzzzzz и потом циклом сравнививать со значением переменной?! :)
Евкакий
find({"name_lower" - это из старой версии?
Евкакий
Спасибо :)
Andrew
А я уже в обход скрипт решил запилить)
Andrew
Ну и отлично
Евкакий
В плане? :)
Евкакий
Я правда locale нифига не понял, но на английском пока рабоатет :)
Andrew
Ну в плане как что и с чем сравнить в скрипте)
Andrew
a=db.getCollection('collection').aggregate({$match:{a:/qqq/i}},
{$project:{'a':{$toLower:'$a'}}},
{$group:{_id: '$a' }}
).toArray()[0]["_id"]
Andrew
Вот такой запрос как я понял. Ищем по регулярке, переводим в lower, группируем по полю, берем первый из массива полученных результатов
Andrew
типа если было qqq и qQq то запрос выдаст только qqq
Andrew
а далее с этой переменной сравнить
Евкакий
А если запрос qq выдаст qqq?
У меня с регулярками была такая проблема :)
Andrew
^qqq$ вот так например
Andrew
регулярку
Andrew
http://regexr.com/
Andrew
вот тут можно вводить строки, регулярки и тренироваться
Евкакий
Всем спасибо, буду дальше издеваться и искать ещё варианты :)
Евкакий
Всё, 2 рабочих варианта есть, день не совсем просран ))))))
Евкакий
Dmitry
Всем привет) Подскажите, смогу ли я установить MongoDB, если мой хостинг предоставляет БД MySQL и PostgreSQL ?
Евкакий
Привет. Пробуй:) Или у них спроси)
Dmitry
хз, я только фронтом занимался, вот приспичило самому в Монго разобраться, первый день сижу ковыряюсь..
Dmitry