Михаил
Проверил в mongoDB))
То есть напрямую монгош выдает документ без поля, монгус выдает из этой же коллекции документ с таким же _id но у него есть лишнее поле?
Anton
если монгош это монго шел
Cloud
Ну тыб показал скринами схему Как запрос посылаешь Шо тебе возвращает
Anton
Да лан, сам разберусь, думал мало ли известная бага
Anton
А вообще, когда мы добавляем новые поля в Schema, как сделать так чтобы все старые документы обновились? Или только руками?
Михаил
Да лан, сам разберусь, думал мало ли известная бага
Вообще монгус не может тебе вернуть документ с лишним полем Значит ты или что-то не так делаешь, или берешь из кеша и не замечаешь
lmn
Монгус это же вродя что то из мира яваскрипта это чат по яваскрипту?
Kirill
Монгус это же вродя что то из мира яваскрипта это чат по яваскрипту?
Что ж теперь, не обсуждать драйвера монги под разные языки?
lmn
Это драйвер?
lmn
Я конечно слава богу не пишу на ноджс но будучи нулевым в этом вопросе из контекста подозреваю что это не драйвер
lmn
Ну я к тому и клоню что может стоило бы в местах по профилю эти вопросы уточнить
Михаил
Ну я к тому и клоню что может стоило бы в местах по профилю эти вопросы уточнить
Ну вряд ли есть чат именно для монгуса, а шансов, что в этом чате есть много пользователей монгуса выше, чем в чате для ноды например. На мой взгляд обоснованный вопрос.
Anonymous
А я могу же создать ссылку на документ не по _id, а по другому полю?
Александр
А я могу же создать ссылку на документ не по _id, а по другому полю?
Могу ошибаться но это работает аля форейджн кей, и ссылать можно только на обджектИд
Anonymous
(
Александр
иначе он не сможет точно идентифицировать документ
Anonymous
понял
Anonymous
тогда может подскажешь как лучше организовать такую штуку const ProductSchema = new Schema<IProduct<IRef, IRef> & Document>({ additionalInfo: String, description: String, id: String, code: String, isDeleted: Boolean, name: String, differentPricesOn: Array, doNotPrintInCheque: Boolean, measureUnit: String, modifiers: Array, price: Number, productCategoryId: { type: Schema.Types.ObjectId, ref: "Category" }, type: String, weight: Number, images: [ { type: String, ref: "Image" } ], isIncludedInMenu: Boolean, order: Number, parentGroup: { type: Schema.Types.ObjectId, ref: "Group" }, warningType: Number }); const GroupSchema = new Schema<IGroup & Document>({ id: String, name: String, isDeleted: Boolean, isIncludedInMenu: Boolean, order: Number, images: [ { type: String, ref: "Image" } ] }); const CategorySchema = new Schema<ICategory & Document>({ name: String, id: String }) Получается есть категории и группы, и продукт ссылается на них, как их можно в коде связать? Пробежатся циклом по группам и категориям и из них получить их _id, и только потом создавать продукты и указывать в них ссылку на группы и категории?
Александр
тогда может подскажешь как лучше организовать такую штуку const ProductSchema = new Schema<IProduct<IRef, IRef> & Document>({ additionalInfo: String, description: String, id: String, code: String, isDeleted: Boolean, name: String, differentPricesOn: Array, doNotPrintInCheque: Boolean, measureUnit: String, modifiers: Array, price: Number, productCategoryId: { type: Schema.Types.ObjectId, ref: "Category" }, type: String, weight: Number, images: [ { type: String, ref: "Image" } ], isIncludedInMenu: Boolean, order: Number, parentGroup: { type: Schema.Types.ObjectId, ref: "Group" }, warningType: Number }); const GroupSchema = new Schema<IGroup & Document>({ id: String, name: String, isDeleted: Boolean, isIncludedInMenu: Boolean, order: Number, images: [ { type: String, ref: "Image" } ] }); const CategorySchema = new Schema<ICategory & Document>({ name: String, id: String }) Получается есть категории и группы, и продукт ссылается на них, как их можно в коде связать? Пробежатся циклом по группам и категориям и из них получить их _id, и только потом создавать продукты и указывать в них ссылку на группы и категории?
в плане связать? если ты в коде в основном документе указываешь ObjectId группы условно котики, то потом найти все документы которые в группе котики, ты можешь получив ID группы котиков, и найти все документы из базовой коллекции, где группа = котики_id если не верно понял поясни)
Anonymous
то есть я сначала их сохраняю, а потом когда дохожу до сохранения продуктов, я ищу нужную мне категорию и получаю из результата _id и сохраняю продукт с этим рефом?
Anonymous
такова логика?
Jes
Привет. Пытаюсь добавить в бд такую дату: data = { 'utt_id': 'b8f6b2359cc1e011702c863ab966e486', 'text': "some text", 'orig_text': "some text", 'active_skill': 'some_skill', 'confidence': 1.0, 'annotations': {}, 'date_time': '2021-09-06 11:33:41.203000', 'user': { 'id': '6135f5ffc46107108f3c1fc8', 'persona': {}, 'attributes': {}, 'user_type': 'bot' }, 'attributes': { 'ratings': [ { 'rating': 'like', 'user_external_id': '123456', 'datetime': { '$date':1630928022581 } } ] } } питоновский код: result = await db.update_one( {'_id': self._id}, {'$set': data} ) получаю эксепшн: pymongo.errors.WriteError: The dollar ($) prefixed field '$date' in 'attributes.ratings.0.datetime.$date' is not valid for storage. Подскажите, в чем может быть дело?
fλüggåɘnk∂€čhiœßøλ∫ên
{ $set: { <field1>: <value1>, ... } }
fλüggåɘnk∂€čhiœßøλ∫ên
и еще вот это: 'datetime': {'$date':1630928022581} на питоне не пишу, но кажется запись $date невалидная https://pymongo.readthedocs.io/en/stable/examples/datetimes.html
Jes
и еще вот это: 'datetime': {'$date':1630928022581} на питоне не пишу, но кажется запись $date невалидная https://pymongo.readthedocs.io/en/stable/examples/datetimes.html
Спасибо за наводки. У меня почти нет опыта с монго, делал по аналогии с уже имеющейся функцией, она работает корректно и записывает: ... "attributes": { "ratings": [ { "rating": "5", "user_external_id": "123456", "datetime": { "$date": 1630922638596 } } ] } ... поэтому и решил что такая запись должна быть валидной
Anonymous
А почему мне отдается несколько документов при выборке с помощью populate в монгусе, const addresses = await Address.find().populate({ path: "city", match: {_id: id} });
Nick
А почему мне отдается несколько документов при выборке с помощью populate в монгусе, const addresses = await Address.find().populate({ path: "city", match: {_id: id} });
А что не так? Вы делаете find и вытаскиваете все из коллекции, к каждому доку в поле city добавляется связанный док
Anonymous
да уже понял, спасибо
iwahid
Ребят, привет Подскажите, пожалуйста, правильно ли я понимаю, что: в монге всё хранится в коллекциях. Записи - это документы. Документы в коллекциях А документы могут содержать в себе другие коллекции?
iwahid
И если да, то в ситуации, когда документ содержит коллекции других документов, то на корневой документ распространятеся ограничение в 16Мб, если все дочерние документы суммарно занимают больший объём?
iwahid
аналогия верная, но в документы не содержат другие коллекции (разве что ссылки на доки в других коллекциях)
Ок, в таком случае, если (например), мне нужен документ (record), в который мне нужно загрузить сотни изображений по 1Мб, то следует сделать так: В отдельной коллекции (images) создать документы, каждый из которых (image) - это одно фото. Создать вторую коллекцию (records) , в которой будет какая-то запись (record), и внутри этого документа просто массив со ссылками на документы из первой коллекции (images), верно?
Anonymous
В чём может быть причина такой ошибки MongooseServerSelectionError: connect EADDRNOTAVAIL 127.0.0.1:27017 - Local (127.0.0.1:0)? Происходит это периодически при "интенсивном"(сравнительно со средней нагрузкой) обновлении объектов в базе. Параметры подключения такие ?retryWrites=true&maxPoolSize=500&serverSelectionTimeoutMS=30000&connectTimeoutMS=30000.
Alex
127.0.0.1:0 - ну здесь клиент выбирает нулевой порт почему-то, что не есть валидным значением
Alex
возможно у тебя много подключений и все порты заняты, проверь нетстатом каким-то
Anonymous
возможно у тебя много подключений и все порты заняты, проверь нетстатом каким-то
Хм. Много подключений, все порты заняты - звучит похоже на мой случай. А можешь как-то накинуть где об этом узнать что-то? Как это вообще работает?
Alex
ну когда данные приходят в ОС им нужно знать какому приложению это отправлять, для этого существует порт. валидное значение порта это 1..65535. Монго по умолчанию использует 27017. Клиент обычно выбирает автоматически, но можно назначить и автоматически. возможно если все порты заняты то получим твой случай
Alex
возможно у тебя не закрываются не используемые соединения, вряд ли тебе нужно держать 60000+ одновременных соединений с одного хоста
Alex
и разберись из какого диапазона монго клиент берет порт
Юлиан
Есть в БД коллекция вида { id: 1, name: 'Один' } { id: 2, name: 'Два' } { id: 3, name: 'Три' } { id: 4, name: 'Четыре' } { id: 5, name: 'Пять' } Нужно обновить коллекцию таким образом: На входе массив объектов [ { id: 1, name: 'Один!!!'}, { id: 2, name: 'Два!!!'}, { id: 42, name: 'Сорок два'}, ] Если элемент с таким id в коллекции существует, то обновить его, если такого id нет - вставить этот объект в коллекцию Не пойму можно ли сделать это одним запросом, типа updateMany?
Кирилл
добрый день планирую сейчас mongo replica set с мастером и репликой и арбитром в теории понятно, что делать, но есть нюанс ) арбитр могу разместить на сервере, который через пару месяцев будет выведен из обслуживания можно же будет перенести роль арбитра на другой сервер?
Alexander
offset: 2 limit: 2 уже вернет массив с 4 элементами и если еще раз вызвать — ну так $slice:[2, 4] - возвращает все верно, элемента
Alexander
ну это логично как бы
Ruslan
Всем привет. Подскажите, если создаю юзера db.createUser( `{ user: "test", pwd: "passw0rd", roles: [ { role: "read", db: "Base" } ] } )` Но получаю Authentication failed, что я делаю не так?
imanuil
Всем привет подскажите как правильно написать рекурсивный запрос raw = Category.objects.raw(f""" with recursive objects as ( SELECT id, parent_id FROM category WHERE id={id} union all SELECT id FROM category as p_id WHERE p_id=objects.parent_id ) select id from objects """)
Ruslan
В логах вижу что создается соединение и закрывается
Ruslan
Может глупые вопросы, но я это чудо сегодня первый раз в жизни увидел
Elinka22
Всем привет! У меня очередной глупый вопрос: как накатить индекс так на коллекцию, что бы монга не лочилась?
Melonges
Да как развернуть монгу на своем сервере. Все туторилы показываются на mogno cloud
Nick
Всем привет! У меня очередной глупый вопрос: как накатить индекс так на коллекцию, что бы монга не лочилась?
Надо указать при создании опцию background https://docs.mongodb.com/manual/reference/method/db.collection.createIndex/#options-for-all-index-types
Nick
Да как развернуть монгу на своем сервере. Все туторилы показываются на mogno cloud
https://docs.mongodb.com/manual/installation/ выбираете там для какой ОС нужнп инструкиция, например для сентоси https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
Elinka22
Надо указать при создании опцию background https://docs.mongodb.com/manual/reference/method/db.collection.createIndex/#options-for-all-index-types
Спасибо! Попробуем… это работает на всех версиях монг от 4.0 до 5.0?
Elinka22
Да
Спасибо!
Александр
Всем привет! Очень важный вопрос. По ошибке удалил все данные из коллекции. Можно как-то восстановить?
Nick
а этот метод норм? https://losst.ru/kak-ustanovit-mongodb-v-ubuntu
Что мешает взять официальный тутор https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
Александр
Если есть бекапы да
А если нету - никак?((
Михаил
А если нету - никак?((
Насколько мне известно - никак
fλüggåɘnk∂€čhiœßøλ∫ên
Anonymous
кто может подсказать как это исправить?
Anonymous
ravia
Нужно бутнуть сервер где вторичная реплика монги 1. Остановить службу 2. Бутнуть сервер и все должно работать после этого?
Anonymous
А нормально в адресной строке хранить айди документа?
Anonymous
типо есть продукв, и хочу сделать ему юри в виде /shop/product/:id, и потом выцеплять этот айди искать товар и связанные с ним поля
A
А если нету - никак?((
Теоретически по oplog, при условии что в нем есть все данные
Andrey
Коллеги, вопрос такой, можно ли выбрать в документе поля начинающиеся по какому-нить правилу. То есть в документе есть поля в названии начинающиеся на start_, можно ли как-то выбрать поля и их названия
Andrey
условно, есть поля start_1, start_2, start_3...start_n - хочу выбрать все поля со start_, и выделить в них значения после start_