Устаревший ответ: см. Другие ответы.
Я не верю, что то, о чем вы спрашиваете, возможно, по крайней мере, без некоторого уменьшения карты?
См. здесь: Фильтрация встроенных документов в MongoDB
В этом ответе предлагается изменить схему, чтобы она лучше подходила для работы с данными.
Вы можете использовать либо «точечную нотацию», либо $ elemMatch, чтобы вернуть правильный документ с соответствующим «заголовком заметки» ...
> db.collection.find({ "notes.title" : "Hello MongoDB"}, { "notes.title" : 1"});
или ...
> db.collection.find({ "notes" : { "$elemMatch" : { "title" : "Hello MongoDB"} }});
Но вы получите весь массив , а не только элемент массива, который вызвал совпадение.
Кроме того, есть о чем подумать ... с вашей текущей настройкой будет трудно выполнять какие-либо операции над элементами в массиве.
Если вы не измените свою схему (как подсказывает ответ, связанный с этим) ... я бы рассмотрел возможность добавления «идентификаторов» к каждому элементу в массиве, чтобы вы могли легко, например, удалить его, если это необходимо.
If you are on *nix (and assuming you have to modify only parts of file (and rarely)), you may split the files (using the split
command), edit them individually (using awk
, sed
, or something similar) and concatenate them after you are done.
cat file2 file3 >> file1
Единственное, что я смог использовать для чего-то вроде этого, - это мой любимый шестнадцатеричный редактор Mac, 0XED. Однако это было с файлами, которые я считал большими - десятки мегабайт. Я не уверен, как далеко это зайдет. Однако я почти уверен, что он загружает в память только части файла одновременно.
В прошлом я ' Мы успешно использовали подход разделения / редактирования / объединения, когда файлы становятся очень большими. Чтобы это работало, вы должны знать, где находится редактируемый текст в исходном файле.
Я использовал TextPad для больших файлов журналов, у него нет верхнего предела.
Я использовал встроенный редактор / просмотрщик FAR Commander для сверхбольших файлов журнала.
Раньше я открывал 3-гигабайтный файл с помощью этого инструмента http://csved.sjfrancke.nl/
Лично мне нравится UltraEdit . Вот их небольшой рассказ о больших файлах .
Вау, никогда не удавалось заставить vim задыхаться, даже с один или два ГБ. Я слышал, что UltraEdit (в Windows) и BBEdit (на Mac) даже больше подходят для файлов еще большего размера, но у меня нет личного опыта.
Я думаю, что шестнадцатеричные редакторы довольно часто обрабатывают огромные файлы. В Windows я использую HxD , который утверждает, что обрабатывает файлы размером до 8 ЭБ (8 миллиардов гигабайт).
Я пытался сделать это, в основном с файлами размером около 1 ГБ, когда мне нужно было внести небольшие изменения в SQL. свалка. Я использую Windows, и это очень больно. Это серьезно сложно.
Возникает очевидный вопрос: "Зачем вам это нужно?" Я могу сказать вам по опыту, когда приходилось пробовать это более одного раза, вы, вероятно, действительно хотите попробовать найти другой способ.
Итак, как вы это делаете? Я сделал это несколькими способами. Иногда я могу заставить vim или nano открыть файл, и я могу их использовать. Это действительно тяжелая боль, но она работает.
Если это не работает (как в вашем случае), у вас есть только несколько вариантов. Вы можете написать небольшую программу для внесения необходимых вам изменений (например, поиск и замену). Вы можете использовать программу командной строки, которая может это сделать (может быть, это можно сделать с помощью sed / awk / grep / etc?)
Если они не работают, вы всегда можете разбить файл на куски (что-то например, split - очевидный выбор, но вы можете использовать голову / хвост, чтобы получить нужную деталь), а затем отредактировать нужную (ые) часть (и), а затем повторно объединить.
Поверьте мне, попробуйте найти другой способ.
Так как вы это делаете? Я сделал это несколькими способами. Иногда я могу заставить vim или nano открыть файл, и я могу их использовать. Это действительно тяжелая боль, но она работает.
Если это не работает (как в вашем случае), у вас есть только несколько вариантов. Вы можете написать небольшую программу для внесения необходимых вам изменений (например, поиск и замену). Вы можете использовать программу командной строки, которая может это сделать (может быть, это можно сделать с помощью sed / awk / grep / etc?)
Если они не работают, вы всегда можете разбить файл на куски (что-то например, split - очевидный выбор, но вы можете использовать голову / хвост, чтобы получить нужную деталь), а затем отредактировать нужную (ые) часть (и), а затем повторно объединить.
Поверьте мне, попробуйте найти другой способ.
Так как вы это делаете? Я сделал это несколькими способами. Иногда я могу заставить vim или nano открыть файл, и я могу их использовать. Это действительно тяжелая боль, но она работает.
Если это не работает (как в вашем случае), у вас есть только несколько вариантов. Вы можете написать небольшую программу для внесения необходимых вам изменений (например, поиск и замену). Вы можете использовать программу командной строки, которая может это сделать (может быть, это можно сделать с помощью sed / awk / grep / etc?)
Если они не работают, вы всегда можете разбить файл на куски (что-то например, split - очевидный выбор, но вы можете использовать голову / хвост, чтобы получить нужную деталь), а затем отредактировать нужную (ые) часть (и), а затем повторно объединить.
Поверьте мне, попробуйте найти другой способ.
Иногда я могу заставить vim или nano открыть файл, и я могу их использовать. Это действительно тяжелая боль, но она работает.Если это не работает (как в вашем случае), у вас есть только несколько вариантов. Вы можете написать небольшую программу для внесения необходимых вам изменений (например, поиск и замену). Вы можете использовать программу командной строки, которая может это сделать (может быть, это можно сделать с помощью sed / awk / grep / etc?)
Если они не работают, вы всегда можете разбить файл на куски (что-то например, split - очевидный выбор, но вы можете использовать голову / хвост, чтобы получить нужную деталь), а затем отредактировать нужную (ые) часть (и), а затем повторно объединить.
Поверьте мне, попробуйте найти другой способ.
Иногда я могу заставить vim или nano открыть файл, и я могу их использовать. Это действительно тяжелая боль, но она работает.Если это не работает (как в вашем случае), у вас есть только несколько вариантов. Вы можете написать небольшую программу для внесения необходимых вам изменений (например, поиск и замену). Вы можете использовать программу командной строки, которая может это сделать (может быть, это можно сделать с помощью sed / awk / grep / etc?)
Если они не работают, вы всегда можете разбить файл на куски (что-то например, split - очевидный выбор, но вы можете использовать голову / хвост, чтобы получить нужную деталь), а затем отредактировать нужную (ые) часть (и), а затем повторно объединить.
Поверьте мне, попробуйте найти другой способ.
t работать (как и в вашем случае) у вас есть только несколько вариантов. Вы можете написать небольшую программу для внесения необходимых вам изменений (например, поиск и замену). Вы можете использовать программу командной строки, которая может это сделать (может быть, это можно сделать с помощью sed / awk / grep / etc?)Если они не работают, вы всегда можете разбить файл на куски (что-то например, split - очевидный выбор, но вы можете использовать голову / хвост, чтобы получить нужную деталь), а затем отредактировать нужную (ые) часть (и), а затем повторно объединить.
Поверьте мне, попробуйте найти другой способ.
t работать (как и в вашем случае) у вас есть только несколько вариантов. Вы можете написать небольшую программу для внесения необходимых вам изменений (например, поиск и замену). Вы можете использовать программу командной строки, которая может это сделать (может быть, это можно сделать с помощью sed / awk / grep / etc?)Если они не работают, вы всегда можете разбить файл на куски (что-то например, split - очевидный выбор, но вы можете использовать голову / хвост, чтобы получить нужную деталь), а затем отредактировать нужную (ые) часть (и), а затем повторно объединить.
Поверьте мне, попробуйте найти другой способ.
Это могут быть плагины, которые заставляют его задыхаться. (подсветка синтаксиса, складки и т. д.)
Вы можете запускать vim без плагинов.
vim -u "NONE" hugefile.log
Это минимализм, но он, по крайней мере, даст вам привычные движения vi.
syntax off
- еще один очевидный вопрос. Сократите установку и найдите то, что вам нужно. Вы узнаете, на что он способен и нужно ли вам решать задачу другими способами.
Возможно, вы захотите проверить этот плагин VIM , который отключает некоторые функции vim в интересах скорости загрузки больших файлов.