Anonymous
{
"_id": {
"$oid": "5e6667bc847a9b0320211d5e"
},
"entered": {
"1": {
"id": "123"
},
"2": {
"id": "223"
}
}
}
как найти тут?
Anonymous
не зная номера
Anonymous
1 или 2
Anonymous
но по id
Nick
не зная номера
вам нужен всетаки массив, а не прямо все в объекты разворачивать:
"entered": [
{
"id": "123"
},
{
"id": "223"
}
]
поменяйте тип entered на массив и в него просто добавляйте объекты
Nick
тогда поиск будет по entered.id:123
Anonymous
хорошо
Nick
но из базы вернется весь объект вместе со всеми остальными элеменатми в массиве, если нужен только этот элемент в массиве, то это по другому делается
Anonymous
db.test.find({entered.id:123}).toArray()
2020-04-04T01:10:35.386+0300 E QUERY [js] uncaught exception: SyntaxError: missing : after property id :
Nick
в кавычки оберните {"entered.id" : 123}
Nick
и если у вас поле стринговое, то еще и 123 в кавычки
Anonymous
Anonymous
Nick
пример на ваших данных https://play.db-ai.co/m/Xoe1z4OtowAByoHe
Nick
а где прочитать? я их в ручную обрабатываю
вообще по агрегациям, это чтобы данные преобразовывать перед выдачей из базы, много инфы в документации https://docs.mongodb.com/manual/reference/operator/aggregation-pipeline/
Anonymous
спасибо
Nick
если что пишите, подскажем
Roman
Как сделать сортировку по нескольким полям из кода?
Roman
Пример:
db.collection ("collection").find ({ }, { field: 1, field_: 1 }) не работает
Paul
Nick
Anonymous
Я в чём-то согласен, что монга — это извращение, но не настолько же.
Roman
Roman
Roman
@d_lebedinsky 3 варианта работают аналогично
Roman
Roman
Roman
Вот полный код
Roman
Пробовол также делать в терминале. То там работает, а из кода нет
Daniil
@d_lebedinsky 3 варианта работают аналогично
Ваши варианты эксплуатируют особенности синтаксиса js и не имеют отношения к сортировке. Вторым параметров find принимает объект projection, для выборки конкретных полей, что тоже не имеет отношения к сортировке. Выше вам привели пример как использовать сортировку.
Roman
Я сначала неправильно написал. Имел введу про выборку полей, а написал сортировку.
Но те 3 примера работает одинаково, что с проекцией, что и без
Daniil
Roman
1 = 2 = 3 варианты я проверял у меня так работает
Daniil
стоит думать, что у вас ничего кроме полей receiveId, gottenId и _id больше ничего в схеме нет, тогда эти три варианта действительно вернут одинаковый результат, но совершенно по разным причинам)
Roman
Артем
Всем привет. Был один проект с монгой, в базу писались документы. Сейчас, ради инетерсу решил подключить эту базу в админку Django. База подключилась, но никак не могу найти информацию как подключиться к определенной коллекции, если изловчиться и подобрать классу имя описывающему модель монги в джанго такое же как коллекция, то сыпет ошибку, что такая коллекция уже существует. Может кто-то знает куда копать?
Melodeiro
Нужно последовательно выполнить две операции: удаление и запись, и чтобы в это время не выполнялись операции на чтение (параллельно). Подскажите, как это можно реализовать? Пока просто написал код, который конкретно эти операции выполняет синхронно, но проблема в том, что если будет 2+ операций чтения, они тоже выполняются последовательно. В идеале, если перед началом этих удаления и записи, код подождал бы пока не закончатся текущие операции чтения, и новые при этом не начинались. Ну и чтобы в остальное время чтение выполнялось параллельно.
Решит ли мою проблему использование мульти-документных транзакций? Или во время ее выполнения может произойти чтение неполных данных из другого потока?
Melodeiro
Я новичок в базах данных, не до конца понимаю как работают транзакции, по-этому возможно вопрос глупый
Nick
Нужно последовательно выполнить две операции: удаление и запись, и чтобы в это время не выполнялись операции на чтение (параллельно). Подскажите, как это можно реализовать? Пока просто написал код, который конкретно эти операции выполняет синхронно, но проблема в том, что если будет 2+ операций чтения, они тоже выполняются последовательно. В идеале, если перед началом этих удаления и записи, код подождал бы пока не закончатся текущие операции чтения, и новые при этом не начинались. Ну и чтобы в остальное время чтение выполнялось параллельно.
Решит ли мою проблему использование мульти-документных транзакций? Или во время ее выполнения может произойти чтение неполных данных из другого потока?
расскажите какая бизнес задача , а то может вам вообще по другому нужно будет действовать
Nick
почему вам потребовалось настолько дико лочить базу?
Nick
в чем проблема просто обновить их, а не удалять-добавлять?
Nick
вам обязательно одновременно все новые доки увидеть? или можно постепенно обновить те что обновились, доабвить новые а старые удалить?
Melodeiro
Nick
вопрос про одновременность
Nick
одноврменно=дорого и сложно
Melodeiro
Вообще не особо высоконагруженное приложение, доступ к докам должен быть единовременный, не подойдет так, чтобы частично они были старыми, частично новыми
Nick
на сколько знаю в монге нет блокировок на всю коллекцию в рамках транзакций и транзакции работают только на уровне документов, поэтому вы вполне можете сделать свое обновление в транзакции, но пока идет обновление не затронутые доки в коллекции останутся доступны дял приложения
Melodeiro
Nick
это как раз про это
Melodeiro
То есть все равно лочится только конкретный документ в который идет запись?
Nick
да
Aleksey
Правильно ли хранить ссылки на документы по строковому значению _id ? И какая разница если я ищу в pymongo find_one({'_id': ObjectId(_id)}) или find_one({'_id': '5b41eb21b9c5d915989d48a8'}) ?
Daniil
Aleksandr
Привет. Думаю, что классический вопрос. Как установить монгу на каталину? Все способы перерыл, но он мне так и не дает создать /data/db
Daniil
Suworow
Daniil
Гена
с упавшнй ноды (сеонкдари) снимался дамп
Гена
после того как бекап закончился и нода разлочилась, ей не хватило оплогов для накатки и нода обвалилась
Гена
Провел исследование и увидел, что оплог сайз на ноде которая упала в два раза меньше тому показателю что на праймари
Dmitriy
ребят, подскажите, я как-то средствами только монги могу получить список ключей объекта? например, хочу для документа:
{
"_id": ObjectId("ffffffffffffffffffffffff"),
"metadata": {
"param1": "val1",
"param2": "val2",
"param3": "val3"
}
}
хочу получить список ключей в объекте metadata
Antonio
Приветствую. Очень редко и мало работаю с монго. Сейчас пытаюсь сделать запрос использовав одновременно и оператор $and и $in и мне выдается ошибка:
Query failed with error code 2 and error message '$in needs an array' on server
db.inventory.find( { $and: [ { qty: { $in: [ 100, 200] } }, { price: { $exists: true } } ] } )
Alexander
Всем привет) напарсил относительно большую базу и теперь хочу искать в ней по {$text: {$search:, в доках сказано что сначала, нужно проиндексировать нужные поля аля createIndex({"field1":"text","field2":"text"}). Подскажите безопасная ли это операция? в моем случае поля эти не уникальны, ничего не дропнется?)
Alexander
Костяныч
Alexander
да, спасибо, как раз занимаюсь этим
Nick
Alexander
ага, уже потестил, спасибо
Roman
Добрый день, есть мастер и 2 слейва. В час где-то 2200000 вставок. Какое отставание у реплик от мастера по умолчанию?
Roman
спасибо
yopp
Serg
какие есть особенности работы со слейвом на чтение ? есть какието ограничения/хитрости ?