Добавление данных

Последнее обновление: 28.07.2022

Установив бд, теперь мы можем добавить в нее данные. Все данные хранятся в бд в формате BSON, который близок к JSON, поэтому нам надо также вводить данные в этом формате. И хотя у нас, возможно, на данный момент нет ни одной коллекции, но при добавлении в нее данных она автоматически создается.

Как ранее говорилось, имя коллекции - произвольный идентификатор, состоящий из не более чем 128 различных алфавитно-цифровых символов и знака подчеркивания. В то же время имя коллекции не должно начинаться с префикса system., так как он зарезервирован для внутренних коллекций (например, коллекция system.users содержит всех пользователей базы данных). И также имя не должно содержать знака доллара - $.

Для добавления в коллекцию могут использоваться два ее метода:

  • insertOne(): добавляет один документ

  • insertMany(): добавляет несколько документов

Допустим, мы используем базу данных test. Добавим в нее один документ:

test> db.users.insertOne({"name": "Tom", "age": 28, "languages": ["english", "spanish"]})

Документ представляет набор пар ключ-значение. В данном случае добавляемый документ имеет три ключа: name, age, languages, и каждому из них сопоставляет определенное значение. Например, ключу languages в качесте значения сопоставляется массив.

Стоит отметить, что названия ключей могут использоваться в кавычках, а могут и без кавычек.

Некоторые ограничения при использовании имен ключей:

  • Символ $ не может быть первым символом в имени ключа

  • Имя ключа не может содержать символ точки .

При добавлении данных, если мы явным образом не предоставили значение для поля "_id" (то есть уникального идентификатора документа), то оно генерируется автоматически. Так, после выполнения операции добавления консоль выведет сгенерированный для добавленного документа идентификатор:

test> db.users.insertOne({"name": "Tom", "age": 28, "languages": ["english", "spanish"]})
{
  acknowledged: true,
  insertedId: ObjectId("62e27b1b06adfcddf4619fc1")
}
test>

В ответе сервера мы получим объект, у коготоро параметр insertedId будет содержать идентификатор.

Но в принципе мы можем сами установить этот идентификатор при добавлении данных:

test> db.users.insertOne({"_id": 123457, "name": "Tom", "age": 28, "languages": ["english", "spanish"]})

или использовать для индетификатора тип ObjectId

test> db.users.insertOne({"_id": ObjectId("62e27b1b06adfcddf4619fc6"), "name": "Tom", "age": 28, "languages": ["english", "spanish"]})

Стоит учитывать, что если для определения идентификатора применяется тип ObjectId, то он должен содержать строку 12 байт или строку из 24 символов.

В случае удачного добавления на консоль будет выведен идентификатор добавленного документа.

И чтобы убедиться, что документ в бд, мы его выводим функцией find.

test> db.users.find()

По умолчанию он выводит все документы коллекции:

insertOne in mongodb

Если надо добавить ряд документов, то мы можем воспользоваться методом insertMany(), который принимает массив объектов:

db.users.insertMany([{"name": "Bob", "age": 26, "languages": ["english", "french"]}, 
{"name": "Alice", "age": 31, "languages":["german", "english"]}])

После добавления консоль выводит идентификаторы добавленных документов:

insertMany in mongodb

Есть еще один способ добавления в бд документа, который включает два этапа: определение документа (document = ( { ... } )) и собственно его добавление:

document=({"name": "Bill", "age": 32, "languages": ["english", "french"]})
db.users.insertOne(document)

Возможно, не всем будет удобно вводить в одну строчку все пары ключей и свойств. Но интеллектуальный интерпретатор MongoDB на основе javascript позволяет также вводить и многострочные команды. Если выражение не закончено (с точки зрения языка JavaScript), и вы нажимаете Enter, то ввод следующей части выражения автоматически переносится на следующую строку:

Многострочный ввод в MongoDB

Загрузка данных из файла

Данные для базы данных mongodb можно определять в обычном текстовом файле, что довольно удобно, поскольку мы можем переносить или пересылать этот файл независимо от базы данных mongodb. Например, определим где-нибудь на жестком диске файл users.js со следующим содержимым:

db.users.insertMany([
{"name": "Alice", "age": 31, "languages": ["english", "french"]},
{"name": "Lene", "age": 29, "languages": ["english", "spanish"]},
{"name": "Kate", "age": 30, "languages": ["german", "russian"]}
])

То есть здесь с помощью метода insertMany добавляются три документа в коллекцию users.

Для загузки файла в текущую базу данных применяется функция load(), в которую в качестве параметра передается путь к файлу:

load("D:/users.js")

В данном случае предполагается, что файл располагается по пути "D:/users.js".

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850