MongoDB基础知识(二)

MongoDB基础知识(二)

添加文档

  1. BSON介绍:文档的数据结构和JSON基本一样。所有存储在集合中的数据都是BSON格式。BSON 是一种类 json 的一种二进制形式的存储格式,简称 Binary JSON。
  2. 添加文档:MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:
    db.COLLECTION_NAME.insert(document)
    实例演示:
    以下文档可以存储在 MongoDB 的 mongodb1 数据库 的 course 集合中:
>db.course.insert({title: 'MongoDB ', description: 'MongoDB 是一个 Nosql 数据库',
by: 'abc',
url: 'http://*******',tags: ['mongodb', 'database', 'NoSQL'],
likes: 100})

以上实例中 course 是我们的集合名,如果该集合不在该数据库中, MongoDB 会自动创建该集合并 插入文档。
查看已插入文档:

> db.course.find()
{ "_id" : ObjectId("56064886ade2f21f36b03134"), "title" : "MongoDB", "desc ription" : "MongoDB 是一个 Nosql 数据库", "by" : "abc", "url" : "http://*******", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
>
  1. 将数据单独定义为一个变量: 如下:
> document=({title: 'MongoDB', description: 'MongoDB 是一个 Nosql 数据库', by: 'abc',
url: 'http://**********',
tags: ['mongodb', 'database', 'NoSQL'], likes: 100});

执行插入操作:

> db.course.insert(document)
WriteResult({ "nInserted" : 1 })

更新文档

  1. 方法介绍:MongoDB 使用 update()方法来更新集合中的文档。
  2. 语法规则:update() 方法用于更新已存在的文档。语法格式如下:
db.collection.update(<query>,
<update>, {
upsert: <boolean>, multi: <boolean>,
writeConcern: <document> })
  1. 参数说明:
  2. 案例演示:
    我们在集合 course 中插入如下数据:
>db.course.insert({ title: 'MongoDB',
description: 'MongoDB 是一个 Nosql 数据库', by: 'abc',
url: 'http://********',

tags: ['mongodb', 'database', 'NoSQL'], likes: 100})
接着我们通过 update() 方法来更新标题(title):

>db.couse.update({'title':'MongoDB 教程'},{$set:{'title':'NoSQL 教程'}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) # 输出信息> db.col.find().pretty(){
"_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "NoSQL","description" : "MongoDB 是一个 Nosql 数据库",
"by" : "abc","url" : "http://*********",
"tags" : [
"mongodb",
"database","NoSQL"
],
"likes" : 100}
>

可以看到标题(title)由原来的 “MongoDB 教程” 更新为了 “NoSQL 教程”。
5. 以上语句只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为
true。

>db.couse.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{mul ti:true})

补充脚本:

//------------------更新(修改)文档--------------------
//1、首先往Course集合中添加一个文档数据
db.course.insert({
    title:"MongoDB教程",
    likes:100
})
//2、查询course集合中所有的文档数据
db.course.find()
//3、将文档中title="MongoDB"的数据修改为Mybatis教程
db.course.update({"title":"MongoDB教程"},{$set:{"title":"Mybatis"}
})
//4、以上的修改方法,只会修改找到的第一条记录。现在我们需要修改所有满足条件的记录
db.course.update({"title":"MongoDB教程"},{$set:{"title":"Mybatis"}},{multi:true})

删除文档

  1. MongoDB删除文档:在前面的几个章节中我们已经学习了MongoDB中如何为集合添加数据和更 新数据。在本章节中我们将继续学习 MongoDB 集合中文档的删除。
    a) MongoDBremove()函数是用来移除集合中的数据。
    b) MongoDB数据更新可以使用update()函数。
    c) 在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯。 2. 语法:remove() 方法的基本语法格式如下所示:
db.collection.remove(<query>,<justOne>)

如果你的 MongoDB 是 2.6 版本以后的,语法格式如下:

db.collection.remove(<query>,
{justOne: <boolean>,
writeConcern: <document> })
  1. 参数说明:
    a. query:(可选)删除的文档的条件。
    b. justOne : (可选)如果设为 true 或 1,则只删除一个文档。 c. writeConcern :(可选)抛出异常的级别。
  2. 案例演示:
    a) 以下文档我们执行两次插入操作:
>db.course.insert({title: 'MongoDB ', description: 'MongoDB 是一个 Nosql 数据库',
by: '张三丰',url: 'http://******',
tags: ['mongodb', 'database', 'NoSQL'], likes: 100})

b) 使用 find() 函数查询数据:

> db.col.find()
{ "_id" : ObjectId("56066169ade2f21f36b03137"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数 据库", "by" : "abc", "url" : "http://*********", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
{ "_id" : ObjectId("5606616dade2f21f36b03138"), "title" : "MongoDB", "description" : "MongoDB 是一个 Nosql 数
据库", "by" : "abc", "url" : "http://******", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }

c) 接下来我们移除 title 为 ‘MongoDB 教程’ 的文档:

>db.col.remove({'title':'MongoDB 教程'}) WriteResult({ "nRemoved" : 2 }) # 删除了两条数据
>db.col.find()...... # 没有数据
  1. 如果你只想删除第一条找到的记录可以设置 justOne 为 1,如下所示: >db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
  2. 如果你想删除所有数据,可以使用以下方式(类似常规 SQL 的 truncate 命令):
>db.col.remove({})
>db.col.find()

补充脚本:
//1、首先查看course集合中的所有数据
db.course.find()
//2、添加两条title值一样的数据
db.course.insert({“title”:“MongoDB”,likes:120})
//3、删除title="MongoDB"的所有数据记录
db.course.remove({“title”:“MongoDB”})
//4、值删除满足条件的第一条记录
db.course.remove({“title”:“MongoDB”},{justOne:1})
//5、删除course集合中的所有文档(类似于清空表中的数据)
db.course.remove({})

条件查询

b1. 方法介绍:MongoDB 查询文档使用 find() 方法,find() 方法以非结构化的方式来显示所有文档。 2. 语法:db.集合名.find(query, projection)
a) query :可选,使用查询操作符指定查询条件
b) projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该
参数即可(默认省略)。
3. MongoDB与关系型数据库中where语句比较:
在这里插入图片描述
在这里插入图片描述
补充脚本:
//1、查询某一个集合中的所有数据(类似于selct * from 表名)
db.course.find()
//2、查询title=“Mybatis开发”
db.course.find({“title”:“Mybatis开发”}).pretty()
//3、查询likes<120的所有数据记录
db.course.find({“likes”:{KaTeX parse error: Expected 'EOF', got '}' at position 7: lt:120}̲}) //4、查询likes<…lte:120}})
//5、查询查询likes>120的所有记录
db.course.find({“likes”:{KaTeX parse error: Expected 'EOF', got '}' at position 7: gt:120}̲}) //6、查询查询like…gte:120}})
//7、查询出likes!=120的所有记录
db.course.find({“likes”:{$ne:120}})

发布了60 篇原创文章 · 获赞 52 · 访问量 3722

猜你喜欢

转载自blog.csdn.net/Asia1752/article/details/104217200