MongoDB 简单的增删改查
备注:
MongoDB 4.2 版本
文章目录
- 一.创建
- 二.读取
- 三.更新
- 四.删除
一.创建
语法:
db.COLLECTION_NAME.insert(document)
或
db.COLLECTION_NAME.save(document)
insert 函数可以将一个文档加入添加到集合中。
举一个例子,当前数据库的排名的例子
db_no 数值类型
db_name 字符类型
date 时间类型
用两种不同的方式来进行插入
my_db = { "db_no" : 1,
"db_name" : "Oracle",
"date" : new Date(2011,1,1)
};
db.test.insert(my_db)
db.test.insert({ "db_no" : 2,
"db_name" : "MySQL",
"date" : new Date(2014,1,1)
}
)
测试记录:
> my_db = { "db_no" : 1,
... "db_name" : "Oracle",
... "date" : new Date(2011,1,1)
... };
{
"db_no" : 1,
"db_name" : "Oracle",
"date" : ISODate("2011-01-31T16:00:00Z")
}
> db.test.insert(my_db)
WriteResult({ "nInserted" : 1 })
>
> db.test.insert({ "db_no" : 2,
... "db_name" : "MySQL",
... "date" : new Date(2014,1,1)
... }
... );
WriteResult({ "nInserted" : 1 })
>
二.读取
find和findone方法可以用于集合里的文档,若只想查询一个文档,可以用findone
-- 注意大小写
db.test.findOne()
db.test.find()
测试记录:
> db.test.findOne()
{
"_id" : ObjectId("5fa3d7d0ed28326b236a1384"),
"db_no" : 1,
"db_name" : "Oracle",
"date" : ISODate("2011-01-31T16:00:00Z")
}
>
>
> db.test.find()
{ "_id" : ObjectId("5fa3d7d0ed28326b236a1384"), "db_no" : 1, "db_name" : "Oracle", "date" : ISODate("2011-01-31T16:00:00Z") }
{ "_id" : ObjectId("5fa3d834ed28326b236a1385"), "db_no" : 2, "db_name" : "MySQL", "date" : ISODate("2014-01-31T16:00:00Z") }
>
三.更新
使用update来修改文档,update接收(至少)两个参数:第一个是限定条件,第二个是新的文档。
加上我们此时要在
语法:
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
参数说明:
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
首先,修改变量test,增加 comments 键:
my_db.comments = []
然后执行update操作,用新的版本的文档替换db_name为Oracle的
db.test.update({db_name :‘Oracle’}, my_db);
db.test.find()
测试记录:
> my_db.comments = []
[ ]
> db.test.update({db_name :'Oracle'}, my_db);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.test.find()
{ "_id" : ObjectId("5fa3d7d0ed28326b236a1384"), "db_no" : 1, "db_name" : "Oracle", "date" : ISODate("2011-01-31T16:00:00Z"), "comments" : [ ] }
{ "_id" : ObjectId("5fa3d834ed28326b236a1385"), "db_no" : 2, "db_name" : "MySQL", "date" : ISODate("2014-01-31T16:00:00Z") }
>
不使用变量的方法如下:
db.test.update({db_name :'MySQL'},
{ "db_no" : 2,
"db_name" : "MySQL",
"date" : new Date(2014,1,1),
"comments" : []
}
)
测试记录:
> db.test.update({db_name :'MySQL'},
... { "db_no" : 2,
... "db_name" : "MySQL",
... "date" : new Date(2014,1,1),
... "comments" : []
... }
... )
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.test.find()
{ "_id" : ObjectId("5fa3dc93adefc7dc8cfaf5f9"), "db_no" : 1, "db_name" : "Oracle", "date" : ISODate("2011-01-31T16:00:00Z"), "comments" : [ ] }
{ "_id" : ObjectId("5fa3dc98adefc7dc8cfaf5fa"), "db_no" : 2, "db_name" : "MySQL", "date" : ISODate("2014-01-31T16:00:00Z"), "comments" : [ ] }
>
四.删除
语法:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
上面语法 可选
使用remove方法可将文档从数据库中永久删除。如果没有使用任何参数,它会将集合内的所有文档全部删除。它可以接受一个作为限定条件的文档作为参数
-- 删除1条数据
db.test.remove({db_no : 1})
db.test.find()
-- 删除所有数据
db.test.remove({})
db.test.find()
测试记录:
> db.test.remove({db_no : 1})
WriteResult({ "nRemoved" : 1 })
> db.test.find()
{ "_id" : ObjectId("5fa3dc98adefc7dc8cfaf5fa"), "db_no" : 2, "db_name" : "MySQL", "date" : ISODate("2014-01-31T16:00:00Z"), "comments" : [ ] }
>
>
> db.test.remove({})
WriteResult({ "nRemoved" : 1 })
> db.test.find()
>
还没有评论,来说两句吧...