Рубрики
Uncategorized

Примечания по обучению Mongodb (2) – добавление, удаление и изменение документов в оболочке Mongo

Автор оригинала: David Wong.

Примечания по обучению Mongodb (2) – добавление, удаление и изменение документов в оболочке Mongo

Версия Mongodb, используемая в этой статье, – 4.0.10

> db.version();
4.0.10

1, Вставьте документ

1. Вставьте документ

Syntax: dB. < Collection >. Insert (document)

в направлении испытания В базе данных пользователь Вставьте документ в коллекцию:

> use test;
switched to db test

> db.user.insert({ "username" : "Tom", "age" : 10 })
WriteResult({ "nInserted" : 1 })

> db.user.find()
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 10 }

Примечание: поле “Идентификатор” автоматически генерируется системой. Вы также можете указать любой тип слова самостоятельно, но значение не может быть повторено.

2. Вставка нескольких документов

Syntax: dB. < Collection >. Insert ([document1, document2,..., documentn])

в направлении испытания В базе данных пользователь Вставьте несколько документов в коллекцию:

> db.user.insert([
...     { "username" : "Mary", "age" : 30 },
...     { "username" : "Martin", "age" : 40 },
...     { "username" : "kart", "age" : 50 },
...     { "username" : "Jack", "age" : 20 }
... ])
BulkWriteResult({
        "writeErrors" : [ ],
        "writeConcernErrors" : [ ],
        "nInserted" : 4,
        "nUpserted" : 0,
        "nMatched" : 0,
        "nModified" : 0,
        "nRemoved" : 0,
        "upserted" : [ ]
})

> db.user.find()
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 10 }
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30 }
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin", "age" : 40 }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart", "age" : 50 }
{ "_id" : ObjectId("5d2f11b814077ad0dab139ca"), "username" : "Jack", "age" : 20 }

2, Удалить данные

Syntax: dB. < Collection >. Remove (condition)

Удалите документы из коллекции пользователей с именем, равным “Джек”.

> db.user.find()
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 10 }
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30 }
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin", "age" : 40 }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart", "age" : 50 }
{ "_id" : ObjectId("5d2f11b814077ad0dab139ca"), "username" : "Jack", "age" : 20 }

> db.user.remove({ "username" : "Jack" })
WriteResult({ "nRemoved" : 1 })

> db.user.find()
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 10 }
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30 }
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin", "age" : 40 }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart", "age" : 50 }

3, Изменение данных

Syntax: update (condition, data, add, modify multiple)

Измените возраст, равный 10, в пользовательском наборе на 20

Способ 1:

var u = db.user.findOne( { "age" : 10 } );
u.age = 20;
DB. User. Update ({"age": 10}, U) or dB. User. Save (U);
> var u = db.user.findOne({ "age" : 10 })

> u.age = 20
20

> db.user.save(u)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.user.find()
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 20 }
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30 }
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin", "age" : 40 }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart", "age" : 50 }

Способ второй:

db.user.update( query, object[, upsert_bool, multi_bool] )
> var u = db.user.findOne({ "age" : 20 })

> u.age = 10
10

> db.user.update({ "age" : 20 }, u)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.user.find()
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 10 }
{ "_id" : ObjectId("5d2f102414077ad0dab139c7"), "username" : "Mary", "age" : 30 }
{ "_id" : ObjectId("5d2f103414077ad0dab139c8"), "username" : "Martin", "age" : 40 }
{ "_id" : ObjectId("5d2f105414077ad0dab139c9"), "username" : "kart", "age" : 50 }

Расстроен? Bool: следует ли создавать новую запись, если нет записи, соответствующей критериям запроса

Примечание: если несколько записей удовлетворяют {“возраст”: 10}, будет изменена только первая запись. Четвертый параметр может быть установлен в значение true для изменения всех записей.

Области, подверженные ошибкам при изменении данных

Если такие данные имеются:

{"_id" : 1 , "username" : "abc" , "age" : 20 , "sex" : "boy" }

Чтобы изменить возраст на 22 года, код ошибки выглядит следующим образом:

var u = db.user.update({ "_id" : 1 }, { "age" : 22 })

После изменения записи она становится:

{ "_id" : 1 , "age" : 22 }

Правильный путь:

Var u = dB. User. Find ({"65124; ID: 1}); -- > fetch record
u. Age = 22; -- > basically modify the original record
DB. User. Save (U) or dB. User. Update ({"[u id": 1}, U)

4, Использование модификаторов

1. $Inc: добавьте число

Увеличьте возраст Тома на два

> db.user.update({ "username" : "Tom" }, { $inc : { "age" : 2 } })
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.user.find({ "username" : "Tom" })
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 12 }

2. $set: изменение поля. Если поле не существует, добавьте его

Измените номер телефона Тома на 10086. Если такого поля нет, добавьте его

> db.user.update({ "username" : "Tom" }, { $set : { "tel" : "10086" } })
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.user.find({ "username" : "Tom" })
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 12, "tel" : "10086" }

Изменить массив

3. $push: добавление элементов в массив

Добавьте друга Джека в друзья Тома.

> db.user.update({ "username" : "Tom" }, { $push: { "friend" : "Jack" } })
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.user.find({ "username": "Tom"}, { "username": 1, "friend": 1 })
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "friend" : [ "Jack" ] }

4. $каждый: элемент операции обхода

Пакетное добавление друзей “Мэри”, “джокер” в друзья Тома.

> db.user.update({ "username" : "Tom" }, { $push : { "friend" : { $each : ["Mary", "Jocker"] } } })
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.user.find({ "username" : "Tom" }, { "username" : 1, "friend" : 1 })
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "friend" : [ "Jack", "Mary", "Jocker" ] }

5. $Pop: извлечение данных из начала или конца массива

Удалите последнего друга из друзей ABC

> db.user.update({ "username" : "Tom" }, { $pop : { "friend" : 1 }})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.user.find({ "username" : "Tom"}, { "username" : 1, "friend" : 1})
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "friend" : [ "Jack", "Mary" ] }

Удалите первого друга из друзей ABC

> db.user.update({ "username" : "Tom" }, { $pop : { "friend": -1 } })
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.user.find({ "username" : "Tom" }, { "username" : 1, "friend" : 1})
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "friend" : [ "Mary" ] }

6. $отменить: удалить поле

Удалить поле друга Тома

> db.user.update( { "username" : "Tom" }, { $unset : { "friend" : "" } } )
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.user.find({ "username" : "Tom" })
{ "_id" : ObjectId("5d2f0a4714077ad0dab139c5"), "username" : "Tom", "age" : 12, "tel" : "10086" }

Изменение, удаление и обновление в mongodb выполняются мгновенно, то есть клиент только отправляет команду на сервер, но не проверяет, успешно ли выполнена команда. Вы можете проверить успех, выполнив GetLastError после каждой команды!

> db.runCommand({"getLastError": 1})
{
        "connectionId" : 1,
        "n" : 0,
        "syncMillis" : 0,
        "writtenTo" : null,
        "err" : null,
        "ok" : 1
}

Оригинал: “https://developpaper.com/mongodb-learning-notes-2-adding-deleting-and-modifying-documents-in-mongo-shell/”