🍗
Здравствуйте. Трабла такая.
$bulk->update(
['_id' => 2],
['$set' => ['accountBag.CashInventory.items.1' => ['count'=>'213']]],
['multi' => false, 'upsert' => false]
);
Запрос на изменение параметра count, а вместо этого удаляется всё что есть в массиве items и вставляется count 213.
Nick
а нужно обновить значение у элемента с индексом 1?
Nick
['accountBag.CashInventory.items.1.count' => '213']
Nick
чтото такое попробуйте
Ilya
https://docs.mongodb.com/ доступен сейчас у кого ?
Anonymous
Ilya
хм
Andrew
Здравствуйте,
есть ли способ вылечить вот это
====
"errmsg" : "exception: no NamespaceDetails for index: { v: 1, key: { _id: 1 }, name: \"_id_\", ns: \"viewsStatistics.
statistics_reduced_1\" }",
"code" : 17329,
===
?
кроме как бэкапа того, что можно забэкапить и восстановления
версия 2.6.12
🍗
🍗
🍗
я не знаю, может я не правильно указываю, но по другому не получается)
Nick
у вас items не массив
Nick
значит нужно просто указать путь
Nick
у вас уже не массив, либо данные попорчены ваши запросом, либо изначально не было массивом
Nick
приведите в изначальный вид
🍗
Получается так, вроде сработало, не удалило ничго.
['$set' => ['accountBag.CashInventory.items.1.count' => '213']],
🍗
очень трудно после SQL под монго сделать скрипт, всё кажется таким нелогичным)))
🍗
в любом случае спасибо за помощь, вроде получилось)
Nick
может тогда отказатсья от монго?
🍗
я бы с радостью, но там целый сервер под монго, мне только веб чатсь надо сделать)
Nick
а пробелма выше скорее всего связана с тем, что после числа 1 ожидалось поле, а так монга расценила 1 как название поля и изменила тип с массива на объект, удалив все старое и создав новое поле 1.
Nick
интересно это нормальное поведение или нет, никто не вкурсе?
🍗
Там да, проблема что ожидался объект, пришел массив, по всей видимости монго решает всё перезаписать на массив, когда я отправил объект всё как по маслу удачно)
🍗
так пробую, вродне всё равно объектом он и остается быть.
['$set' => ['accountBag.CashInventory'=> array('items'=> ['1'=> ['count'=>123]])]],
🍗
🍗
Как сделать массивом?
Nick
Не знаю синтаксиса, так что не поскажу, читайте доки к вашему драйверу
🍗
Это же PHP, его все знают, по крайней мере мне так казалось)
Nick
Если жизнь заставит, то да, но добровольно лезть в нем разбираться эт без меня
Игорь
А подскажите ещё такой момент, ищу информацию, но однозначно не могу найти. Если создать комплексный текстовый индекс, влияет ли в нем очерёдность полей?
Nick
не влияет
Zloy-Dobry
Игорь
но он один на коллекцию может быть
Игорь
я так понимаю, там немного свой алгоритм
Игорь
отюсда такой впорос вытекает. Если я ищу документы по тектововму индексу и потом их найденых, взять только те, что в ценовом диапозоне или по другому числовому полю в документе.
в обычном случае можно было бы создать два индекса на два запроса.
но как быть с текстовым? создам комплексный текстовый индекс и добавлю в конец индекс по полю цена, то я не смогу сделать еще один с другим полем вконце
Nick
видите, вам не подходит монга под ваши задачи
Nick
по крайней мере с текущей структурой документов
Zloy-Dobry
Игорь
ну это на самом деле подзадачи большой задачи, там много чего, для чего монго очень подходит сама по себе. вопрос в том, что только поиск по документам для конкретного варианта подзадачи может быть не таким молниеносным, как хотелось бы. Но в целом не должно быть коллецкий больше 3 500 000 документов, а по ним более или менее адекватно даже без индекса искать. Всегда хочеться оптимизировать и ускорить, но бывают такие затыкания. Если вязть за место монги другой движок, то в других местах может больше проблем появиться в целом в проекте
Zloy-Dobry
Вам точно не к монге, имхо
Игорь
А что например?
Nick
я бы сказал как бычно youpp говорит, сначала сделайте чтоб работало, а потом задумывайтесь о скорости. а то может выяситсья что реально часть задач физически невозможно выполнить на монге, либо это делается через использование хрупих костылей и усложнения логики
Игорь
мне очень подходит документоорентированная база и мне кажеться монго сейчас лучшая.
Во всяком случае, все статьи сравнения говорят в ее пользу.
ElasticSearch все таки не полноценное документоорентированное хранилище
Zloy-Dobry
Постгрес умеет в докумен
Игорь
насколько лучше полнотекстовый поиск постгреса по json полю документа?
мне разбирать и собирать документы совсем не нужно, прям вот никак. поэтому докуметная база.
в постгресе есть поле json, но искать по нему в том же варианте, что я делаю сейчас врядли будет как-то сильно лучше
Игорь
не поймите не правильно, я очень люблю постгрес и это великолепная база. Но разные задачи, разные инструменты. Хорошо бы найти серебренную пулю на все и сразу, но пока такой нет(
Игорь
у меня был опыт, где для работы с документами по факту, импользовалась sql база. постоянные сборки и разборки, для записи и чтения. логика ужасно загромождена, хранение данных не очевидно для понимания и прочее. а когда добавляються или убираются поля в приходящих данных... в общем не комильфо совсем
Мечтатель
K
Подскажите как удалить все данные из коллекции у которых в документе конкретное поле содержит тип данных - строку
yopp
yopp
Вы делает отдельный индекс для $text и отдельный индекс по цене.
yopp
Давно бы уже проверили
Nick
Игорь
ок
Игорь
сейчас проверю
yopp
Но в целом, монга умеет в пересечение индексов. Не обязательно делать compound
yopp
В некоторых случаях так вообще, лучше два индекса
Игорь
"winningPlan" : {
"stage" : "FETCH",
"filter" : {
"$and" : [
{
"price" : {
"$lte" : 2000
}
},
{
"price" : {
"$gte" : 100
}
}
]
},
"inputStage" : {
"stage" : "TEXT",
"indexPrefix" : {
},
"indexName" : "typePrefix_text_vendor_text_model_text",
"parsedTextQuery" : {
"terms" : [ ],
"negatedTerms" : [ ],
"phrases" : [
""
],
"negatedPhrases" : [ ]
},
"textIndexVersion" : 3,
"inputStage" : {
"stage" : "TEXT_MATCH",
"inputStage" : {
"stage" : "FETCH",
"inputStage" : {
"stage" : "OR"
}
}
}
}
},
"rejectedPlans" : [ ]
},
"winningPlan" : {
"stage" : "FETCH",
"filter" : {
"$and" : [
{
"price" : {
"$lte" : 2000
}
},
{
"price" : {
"$gte" : 100
}
}
]
},
"inputStage" : {
"stage" : "TEXT",
"indexPrefix" : {
Игорь
},
"indexName" : "typePrefix_text_vendor_text_model_text",
"parsedTextQuery" : {
"terms" : [ ],
"negatedTerms" : [ ],
"phrases" : [
""
],
"negatedPhrases" : [ ]
},
"textIndexVersion" : 3,
"inputStage" : {
"stage" : "TEXT_MATCH",
"inputStage" : {
"stage" : "FETCH",
"inputStage" : {
"stage" : "OR"
}
}
}
}
},
"rejectedPlans" : [ ]
},
yopp
Выиграла дружба: сначала поиск по TEXT, а потом пересечение его результатов с price. Включите статистику исполнения (executionStats: 1). И пожалуйста, длинные портянки складываете на gist.github.com
Игорь
ок
Gаrblоvian
привет, люди! второй раз восстанавливаю из backup'а БД, после исчезновения всех таблиц. Как можно объяснить проблему?
Gаrblоvian
снаружи доступ к mongo запрещен, пароль сложный(
Gаrblоvian
как проще всего проанализировать ситуацию?
yopp
Логи посмотреть
Gаrblоvian
drop?
yopp
Да
Gаrblоvian
блин, есть дропы :( а как такое возможно?
yopp
Смотрите по номеру сессии откуда логин
yopp
Возможно у вас какие-то проблемы с аутентификацией или с правами
Gаrblоvian
спасибо большое! буду harden'ить!
Мечтатель
Планирую перейти с постгреса и джанговского идиотского ORM на монгу и mongoengine. Уверен что все будет отлично )
Мечтатель
Мечтатель
Спасибо