Михаил
Проверил в mongoDB))
То есть напрямую монгош выдает документ без поля, монгус выдает из этой же коллекции документ с таким же _id но у него есть лишнее поле?
Anton
Михаил
Anton
Anton
если монгош это монго шел
Cloud
Ну тыб показал скринами схему
Как запрос посылаешь
Шо тебе возвращает
Anton
Да лан, сам разберусь, думал мало ли известная бага
Anton
А вообще, когда мы добавляем новые поля в Schema, как сделать так чтобы все старые документы обновились? Или только руками?
Михаил
lmn
Монгус это же вродя что то из мира яваскрипта это чат по яваскрипту?
Kirill
lmn
Это драйвер?
lmn
Я конечно слава богу не пишу на ноджс но будучи нулевым в этом вопросе из контекста подозреваю что это не драйвер
Михаил
lmn
Ну я к тому и клоню что может стоило бы в местах по профилю эти вопросы уточнить
Anonymous
А я могу же создать ссылку на документ не по _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
Привет. Пытаюсь добавить в бд такую дату:
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.
Подскажите, в чем может быть дело?
кажется ты забыл указать поле
https://pymongo.readthedocs.io/en/stable/api/pymongo/collection.html#pymongo.collection.Collection.update_one
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
Anonymous
А почему мне отдается несколько документов при выборке с помощью populate в монгусе,
const addresses = await Address.find().populate({
path: "city",
match: {_id: id}
});
Nick
Anonymous
да уже понял, спасибо
iwahid
Ребят, привет
Подскажите, пожалуйста, правильно ли я понимаю, что: в монге всё хранится в коллекциях. Записи - это документы. Документы в коллекциях
А документы могут содержать в себе другие коллекции?
iwahid
И если да, то в ситуации, когда документ содержит коллекции других документов, то на корневой документ распространятеся ограничение в 16Мб, если все дочерние документы суммарно занимают больший объём?
Nick
Nick
iwahid
аналогия верная, но в документы не содержат другие коллекции (разве что ссылки на доки в других коллекциях)
Ок, в таком случае, если (например), мне нужен документ (record), в который мне нужно загрузить сотни изображений по 1Мб, то следует сделать так:
В отдельной коллекции (images) создать документы, каждый из которых (image) - это одно фото.
Создать вторую коллекцию (records) , в которой будет какая-то запись (record), и внутри этого документа просто массив со ссылками на документы из первой коллекции (images), верно?
Nick
Ок, в таком случае, если (например), мне нужен документ (record), в который мне нужно загрузить сотни изображений по 1Мб, то следует сделать так:
В отдельной коллекции (images) создать документы, каждый из которых (image) - это одно фото.
Создать вторую коллекцию (records) , в которой будет какая-то запись (record), и внутри этого документа просто массив со ссылками на документы из первой коллекции (images), верно?
если разговор именно про изображения и файлы вцелом, то посмотрите на GridFS - надстройка над монгой для хранения файлов
А так да подход верный ссылки отдельно а сами данные отдельно
iwahid
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
возможно у тебя много подключений и все порты заняты, проверь нетстатом каким-то
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
В логах вижу что создается соединение и закрывается
Ruslan
Может глупые вопросы, но я это чудо сегодня первый раз в жизни увидел
Elinka22
Всем привет! У меня очередной глупый вопрос: как накатить индекс так на коллекцию, что бы монга не лочилась?
Melonges
Да как развернуть монгу на своем сервере. Все туторилы показываются на mogno cloud
Elinka22
Nick
Elinka22
Александр
Всем привет! Очень важный вопрос. По ошибке удалил все данные из коллекции. Можно как-то восстановить?
Михаил
Melonges
fλüggåɘnk∂€čhiœßøλ∫ên
Anonymous
кто может подсказать как это исправить?
Anonymous
ravia
Нужно бутнуть сервер где вторичная реплика монги
1. Остановить службу
2. Бутнуть сервер
и все должно работать после этого?
Anonymous
А нормально в адресной строке хранить айди документа?
Anonymous
типо есть продукв, и хочу сделать ему юри в виде /shop/product/:id, и потом выцеплять этот айди искать товар и связанные с ним поля
Andrey
Коллеги, вопрос такой, можно ли выбрать в документе поля начинающиеся по какому-нить правилу.
То есть в документе есть поля в названии начинающиеся на start_, можно ли как-то выбрать поля и их названия
Andrey
условно, есть поля start_1, start_2, start_3...start_n - хочу выбрать все поля со start_, и выделить в них значения после start_