Примечания к обучению MongoDB (2) – Добавление, удаление и изменение документации в оболочке Mongo
Версия MongoDB, используемая в этой статье, – 4.0.10
> db.version(); 4.0.10
I. Вставка Документов
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 }Примечание: поле _id автоматически генерируется системой, вы также можете указать любой тип слова, но значение не может быть повторено.
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. Удалите данные
Grammar: 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 }III. Изменение данных
Syntax: update
Измените возраст с 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 }Upsert_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 ({"_id": 1}); --> take out records
U.age = 22; - > Basically modified in the original record
Db. user. save (u) or db. user. update ({"_id": 1}, u)IV. Использование модификаторов
1. $inc: Добавьте число
Добавьте возраст Тома к 2 годам
> 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. $unset: Удалить поле
Удалить поле друга Тома
> 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
}