Igor
будет ли работать вот такой unwind:
{"$unwind":{"path":"outer_array.inner_array"}}? То есть, можно ли вытягивать отдельно элементы по одному из дважды вложенного в документ массива а-ля:
{
outer_array: [
...
{
inner_array: [...]
},
...
]
}
yopp
yopp
Нужно делать два последовательных анвинда
Igor
Спасибо
Talgatio
https://jsfiddle.net/s163ec4y/
Talgatio
Как мне сделать апдейт инстанса, если обновляемое свойство у меня массив
Talgatio
members: [ { type: String } ]
Talgatio
Ок перефразирую вопрос. У меня есть компания и у компании есть резеденты. При регистрации нового резидента я делаю сет по айди компании в массив резидентов, но вместо того чтобы данные добавлялись в массив, они просто меняются. Как это пофиксить?
Nick
что значит "меняются" добавление тоже изменение
Igor
Talgatio
Мне надо чтобы данные пушились
Nick
https://docs.mongodb.com/manual/reference/operator/update/addToSet/
Igor
Добавление к массиву элементов.
Talgatio
даааа
Nick
если элементы уникальны и не должны дулироваться то addToSet
Talgatio
https://jsfiddle.net/7g1shLe2/
Nick
на уровне монги не знаю, скорее всего через проход по массиву и сравнению поэлементно
Nick
собственно плата за отутствие дублиатов будет присутвовать
Igor
Talgatio
Тип данных для _id?
Nick
вообще тут лучше бы запросить инфу у более иформированных участников, чтоб лишний раз не гнать намонгу)
Talgatio
ObjectId?
Talgatio
message: 'The field \'members\' must be an array but is of type string in document {_id: ObjectId(\'5a06e0e9b576731bf8d7763a\')}',
Alexander
Не силён пока в монге.
А разве апдейта типа {a: 1, ...rest} нет?
Nick
Nick
http://mongoosejs.com/docs/schematypes.html поиск по ofObjectId
Nick
там предлагается какойто тип Schema.Types.ObjectId
Alexander
Alexander
Второй вариант - фильтровать при запросе. Но, это более затратно.
Nick
я в жаваскирптах не пишу, что за такая функция интересная "find.then", типа выполнить дейсвие с результатом файинда?
Михаил Макарычев
Alexander
Alexander
Это промисы
Точно :)
А то у меня пятница 22:40 уже )))
Talgatio
Talgatio
Alexander
Владивосток
Alexander
Alexander
Viktor
Talgatio
Alexander
Внезапно
Nick
.find({...}).then(red=>{...})
Чтото эти промисы не кажутся атомарными, перед следующим апдейтрм после поиска пройдет какоето время, за которое в базе може этот док даже исчезнуть не говоря об простом изменении
Alexander
yopp
Igor
гадость?
Поэлементное сравнение документов, которые могут быть очень, нет, ОЧЕНЬ большими, это очень и очень грустно. Лучше вытащить проекцию идентификаторов и сравнить уж их.
yopp
не могут они быть ОЧЕНЬ большими
yopp
банально из-за ограничения на размер документа
yopp
это раз
yopp
«вытащить проекцию» это уже не _атомарная_ операция
yopp
более того, вытащить это сеть. сеть это миллисекундные задержки.
yopp
не говоря уже о том, что «проекция индентификаторов» будет и так требовать чтения всего документа
yopp
tl;dr: для добавления элемента в массив, если требуется сохранять уникальность элементов, то $addToSet. Если добавлять туда поддокументы, то клиенту необходимо гарантировать одинаковый порядок полей. Пушо {a: 1, b: 2} != {b: 2, a: 1}
Nick
Server
Что не так?
db.getCollection('users').findOne({_id: 5a07118d020b152d1918db6c})
2017-11-11T18:58:54.867+0300 E QUERY [thread1] SyntaxError: identifier starts immediately after numeric literal @(shell):1:40
Server
и так не ищет
db.getCollection('users').findOne({_id: "5a07118d020b152d1918db6c"})
в коллекции такой _id находится
Timur
Anonymous
ребята, кто может помочь запустить вот этот чат? https://github.com/iliakan/chat
Anonymous
все запускается, но сообщения не отправляются
Arthur
Подскажите каким образом можно переместить документы из одной коллекции в другую коллекцию?
Arthur
желательно на mongoose
Slava
а как много документов в коллекции и какая write/update нагрузка на нее ?
Arthur
нагрузка маленькая. документов тоже
Arthur
может есть готовое простое решение?
Slava
готовое простое решение это открыть курсор на коллекцию и начать вставлять в другую, самый просто вариант, при это не забыть выставить верный таймаут курсору
Arthur
спасибо, посмотрю
Slava
к сожалению не владаю mongoose так бы пример накидал)
CC-BY-SA-4.0/Docker-ce30.0
Arthur
уточнение, переместить надо не все документы. только определенную выборку
Arthur
Anonymous
Здравствуйте. Посдкажите, как в аггрегации мне получить количество всех документов - полем в каждом документе?
tenni
https://www.mongodb.com/mongodb-3.6
RC вышла